比较运算符
逻辑运算符
一般来说括号的优先级最高,其次优先级是 AND,然后是 OR。
通配符 % 和 _ 的区别在于,% 代表零个或多个字符,而 _ 只代表一个字符。通配符还是很有用的,尤其是在进行字符串匹配的时候。不过在实际操作过程中,还是建议尽量少用通配符,因为它需要消耗数据库更长的时间来进行匹配。
为了避免全表扫描,一般考虑在 WHERE 及 ORDER BY 涉及到的列上增加索引。
order by 索引
在MySQL中,支持两种排序方式:FileSort和Index排序。Index排序的效率更高, Index排序:索引可以保证数据的有序性,因此不需要再进行排序。 FileSort排序:一般在内存中进行排序,占用CPU较多。如果待排结果较大,会产生临时文件I/O到磁盘进行排序,效率较低。
所以使用ORDER BY子句时,应该尽量使用Index排序,避免使用FileSort排序。
优化建议:
- SQL中,可以在WHERE子句和ORDER BY子句中使用索引,目的是在WHERE子句中避免全表扫描,ORDER BY子句避免使用FileSort排序。 当然,某些情况下全表扫描,或者FileSort排序不一定比索引慢。但总的来说,我们还是要避免,以提高查询效率。
- 尽量Using Index完成ORDER BY排序。 如果WHERE和ORDER BY相同列就使用单索引列;如果不同使用联合索引。
- 无法Using Index时,对FileSort方式进行调优。
此文章为3月Day30学习笔记,内容来源于极客时间《SQL必知必会》