SQL语法优化的一些方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑where及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。
3.应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。
4.应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃索引进行全表扫描(原因如果一个字段有索引一个没有索引将导致执行引擎不使用索引)。可以使用union进行代替。
5.not in也要慎用,否则也会进行全表扫描。改用between…and…
6.使用like “%s”模糊查询会导致进行全表扫描。
7.如果where子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。
8.应尽量避免在where子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。
9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。
10.不要在where子句中的“=”左边进行函数、算术运算或者其他表达式的运算,否则系统将无法正确使用索引。
为什么要进行数据库优化
- 系统的吞吐量瓶颈往往出现在数据库的访问速度上。
- 随着应用程序的运行,数据库中的数据会越来越多,处理时间会相应的变慢。
- 数据时存放在磁盘上的,读写速度无法和内存相比。
优化原则:减少系统瓶颈、减少资源占用、增加系统的反应速度。