关系数据库的查询优化策略二
关系数据库的查询优化策略二(转) 3 书写高效的 SQL 语句 虽然特定的数据库服务器都会对输入的查询语句进行一定的优化操作,但是查询效率主要取决于 DBA 所书写的 SQL 语句的好坏。为确保编写的 SQL 语句有较好的性能,应考虑以下的优化方法: ⑴ 尽量减少使用负逻辑的操作符和函数,因为它们会导致全表扫描,而且容易出错。可以把含有 NOT 、 <> 、! = 等负逻辑的条件表达式转化为意思相当的正逻辑。 ⑵ 字段提取要多少,取多少,避免使用“ select * ”格式,因为在数据量较大的时候,影响查询性能的最大因素不在与数据的查找,而在于物理 I/O 的操作。 ⑶ 避免使用 LIKE 、 EXISTS 、 IN 等标准表达式,他们会使字段上的索引无效,引起全表扫描。尽量减少表的联接操作,不可避免的时候要适当增加一些冗余条件,使参与联接的字段集尽量少。 ⑷ OR 会使字段上的索引失效,引起全表扫描。下面的例子中,可以把 or 子句分开,在把结果做加法和算,也可以编写一个存储过程来避免索引的失效。 Select work-name, work-dept from work where work-id=’2’ or work-id=’3’; ⑸ 尽量减少使用联接字段而把所有的条件分列出来用 and 来进行连接,可以充分的利用在某些字段上已经存在的索引。 select work-id