2019独角兽企业重金招聘Python工程师标准>>>
对于大量的数据记录(百万级别)查询优化,应该避免对数据库进行全表扫描。
以下会提升效率:
1.应考虑在 where 及 order by 涉及的列上建立索引。
以下会导致数据库进行全表扫描,降低效率:
1.在where子句中使用null判断。(除描述、备注等字段外,应尽量避免给数据库字段留null);
2.在where子句中使用 != 或 <> 操作符;
3.在where子句中使用 or 来连接条件,如or前后的条件一个字段有索引,另一个没有则会使数据库放弃使用索引进行搜索改为全表搜索(可用union关键字替代避免全局搜索);
4.在where子句中使用in和not in关键字也会触发全局搜索(对于连续的数值可用between关键字替代in);
5.如此
select id from t where name like ‘%abc%’
模糊查询也会导致数据库使用全表搜索(可用全文搜索替代以达到提高效率的目的如SELECT id FROM t WHERE MATCH (name) AGAINST('+abc' IN BOOLEAN MODE);)
6.在 where 子句中对字段进行表达式操作
SELECT * FROM t WHERE num/2 = 100;
应写成:
SELECT * FROM t WHERE num = 100*2;
7.在where子句中对字段进行函数操作;