数据库查询优化策略
1.合理使用索引
数据库服务器对数据进行访问一般采用下面的两种方式:①索引扫面,通过索引访问数据;②表扫描,读表中的所有页。
当对一个表进行查询时,如果返回的行数占全表总行数的10%到15%时,使用索引可以极大的优化查询性能。但是如果查询涉及到全表40%以上的行时,表扫描的效率比使用索引扫描的效率高。
使用索引的通用规则:
1.在经常用作过滤器或者查询频率较高字段上建立索引;
2.在 SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引;
3.在不同值较少的字段 上不必要建立索引,如性别字段;
4.对于经常存取的列避免建立索引;
5. 用于连接的列(主键/外键)建立索引;
6.在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来确定。
2.书写高效的SQL语句
(1)尽量减少使用负逻辑的操作符和函数,因为它们会导致全表扫描,而且容易出错。可以把含有NOT、<>、!=等负逻辑的条件表达式转化为意思相当的正逻辑。
(2)字段提取要多少,取多少,避免使用“select *”格式,因为在数据量较大的时候,影响查询性能的最大因素不在与数据的查找,而在于物理I/0的操作。
(3)避免使用LIKE、EXISTS、 IN 等标准表达式,他们会使字段上的索引无效,引起全表扫描。尽量减少表的连接操作,不可避免的时候要适当增加一些冗余条件,使参与连接的字段集尽量少。
(4)0R会使字段上的索引失效,引起全表扫描。下面的例子中,可以把or子句分开,在把结果加起来,也可以编写一个存储过程来避