今天和同事合作一个接口程序时遇到了这个问题。搜索结果
SQL中,任何和NULL直接进行运算,结果都只会得到NULL。
NULL在SQL中代表“不确定”,而不是“空”,这是一个很重要的概念,很多地方都需要注意。
处理null参与运算的方法:使用 ifnull 函数。
mysql> select ifnull(null,123);
+------------------+
| ifnull(null,123) |
+------------------+
| 123 |
+------------------+
1 row in set (0.01 sec)
mysql> select ifnull(null,0);
+----------------+
| ifnull(null,0) |
+----------------+
| 0 |
+----------------+
1 row in set (0.00 sec)
参见:MySQL手册3.3.4.6. Working with NULL Values 中的用户评论部分。
xLight: 这篇文章比较全面地介绍了mySQL优化的各个方面。虽然都不很深入,但足以拓展我的思路了。俗话说,师傅领进门,修行在个人嘛。(Oracle: I can only show you the door, you have to walk through. from “matrix”)
MySQL的优化 from Linux技术中坚站
扬SQL之长,其它事情交由应用去做。使用SQL服务器来做:
- 找出基于WHERE子句的行。
- JOIN表
- GROUP BY
- ORDER BY
- DISTINCT
不要使用SQL来做:
技巧:
- 明智地使用键码。
- 键码适合搜索,但不适合索引列的插入/更新。
- 保持数据为数据库第三范式,但不要担心冗余信息或这如果你需要更快的速度,创建总结表。
- 在大表上不做GROUP BY,相反创建大表的总结表并查询它。
- UPDATE table set count=count+1 where key_column=constant非常快。
- 对于大表,或许最好偶尔生成总结表而不是一直保持总结表。
- 充分利用INSERT的默认值。
更多请访问:MySQL的优化
shit, 今天怎么不能复现这个问题了呢!难道那天sql服务出了问题?
SHIT! 总算发现问题所在了,原来数据库中的数据:ye与lan之间有两个空格,而不是一个!
而到页面上,由于HTML的原因,连续两个空格被解析成了一个可见空格,所以我C&P后再查询就说什么都查询不出来
=================================
SELECT * FROM `table`WHERE `col` LIKE ‘%ye lan%’;
其中 col字段 是 text 类型,
似乎由于“ye lan”中间的空格 查询不出结果
原因?我不知道,我想知道