​mysql优化总结

126 阅读1分钟

mysql查询语句优化分享,不同的关键字的效率哪个更高?

01 JOIN 代替子查询NOT IN

NOT IN 的使用

DELETE FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
SELECT * FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

使用JOIN替代

SELECT * FROM customerinfo
LEFT JOIN salesinfo ON customerinfo.CustomerID=salesinfo.
CustomerID
WHERE salesinfo.CustomerID IS NULL

02 数据处理放在运算符右边

SELECT * FROM order
 WHERE YEAR(OrderDate)<2001;
SELECT * FROM order
 WHERE OrderDate<"2001-01-01";
SELECT * FROM inventory
WHERE Amount/7<24;
SELECT * FROM inventory
WHERE Amount<24*7;

上面的两个查询也是返回相同的结果,但后面的查询将比前面的一个快很多

03 Like关键字与通配符的使用

在搜索字符型字段时,我们有时会使用 LIKE 关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的。

例如下面的查询将会比较表中的每一条记录

SELECT * FROM books
WHERE name like "MySQL%"

但是如果换用下面的查询,返回的结果一样,但速度就要快上很多..

SELECT * FROM books
WHERE name>="MySQL"and name<"MySQM"

最后,应该注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用

04 其它

  1. 用 not exists 代替not in

  2. 得到行数 用count(1) 代替 count(*) OK

  3. 当只需要少数字段时,用具体的字段,代替 select *

  4. 想得到用户条数时,用count(1) 代替select 出结果

更多文章,请关注【bug收集】或网站:bug收集

bug收集