第1页共51页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共51页http://www
cn/Art/Show
id=28084如何提高数据库查询效率来源:IT综合信息网1
对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引
应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenumisnull可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:selectidfromtwherenum=03
应尽量避免在where子句中使用
=或操作符,否则将引擎放弃使用索引而进行全表扫描
应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenum=10ornum=20可以这样查询:selectidfromtwherenum=10unionallselectidfromtwherenum=205
in和notin也要慎用,否则会导致全表扫描,如:selectidfromtwherenumin(1,2,3)第2页共51页第1页共51页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共51页对于连续的数值,能用between就不要用in了:selectidfromtwherenumbetween1and36
下面的查询也将导致全表扫描:selectidfromtwherenamelike'%abc%'若要提高效率,可以考虑全文检索
如果在where子句中使用参数,也会导致全表扫描
因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须