使用
JOIN
(位于
FROM
子句中)可以在查询中包含表,而不是在
WHERE
子句中包含子查询。即使您只需要使用表数据进行过滤而不是生成结果集,该技巧也同样适用。
在
FROM
子句中连接多个表执行操作的效果比在
WHERE
子句中使用子查询的效果要好。
避免使用无法利用索引的 SQL 语句。这些语句包括使用子查询中的聚合函数、子查询中的
UNION
语句或包含
UNION
语句的
ORDER BY
子句。
索引可大大加快处理
SELECT
查询的速度。然而,某些 SQL 语法阻止数据库使用索引,从而强制它使用实际数据进行搜索或执行排序操作。
考虑避免使用
LIKE
运算符,特别是带有前导通配符的运算符,如
LIKE('%XXXX%')
所示。
由于
LIKE
操作支持使用通配符搜索,因此它的执行速度比使用完全匹配比较的速度要慢。具体而言,如果使用通配符开始字符串搜索,则数据库根本无法使用索引进行搜索,而必须搜索表中每行的完整文本。
考虑避免使用
IN
运算符。如果预先知道可能的值,可使用
AND
或
OR
写入
IN
操作以加快执行速度。
在下列两个语句中,第二个的执行速度稍快。之所以速度较快,是因为它使用了与
OR
组合在一起的简单等于表达式,而没有使用
IN()
或
NOT IN()
语句:
-- Slower
SELECT lastName, firstName, salary
FROM main.employees
WHERE salary IN (2000, 2500)
-- Faster
SELECT lastName, firstName, salary
FROM main.employees
WHERE salary = 2000
OR salary = 2500
考虑使用 SQL 语句的替代形式以提高性能。
如上面的示例所示,编写 SQL 语句的方法也影响数据库性能。通常,有多种方法可以编写用于检索特定结果集的 SQL
SELECT
语句。在某些情况下,一种方法的运行速度明显比其他方法要快。除了上面的建议,您还可以从有关 SQL 语言的专用资源中了解有关不同的 SQL 语句及其性能的更多信息。
|
|
|