【发布时间】:2018-10-04 07:52:39
【问题描述】:
下面的查询需要十四秒才能给出结果。有没有办法优化这个查询。
SELECT DISTINCT L.F_T_CODE AS F_T_CODE, PHT.F_PHRAS AS F_PHRAS FROM PHRASE_LINK L
INNER JOIN PHRAS_TR PHT ON L.F_P_ID = PHT.F_P_ID
WHERE PHT.F_PHRAS LIKE '%a%'
AND PHT.F_LAN = 'EN' AND L.F_D_CODE != L.F_T_CODE ORDER BY PHT.F_PHRAS
OFFSET 100000 ROWS FETCH NEXT 10 ROWS ONLY;
【问题讨论】:
-
您的
WHERE子句有LIKE '%a%',它不适用于索引。您可以尝试索引连接列,但我什至不确定 SQL Server 会选择使用它们。所以,我看不出有什么方法可以加快您的查询速度。 -
在不知道表定义、索引等的情况下很难给出任何建议。请补充
-
索引适用于 PHT.F_P_ID 但不适用于 L.F_P_ID on Join 条件索引适用于 PHT.F_PHRAS 列,类似运算符索引适用于 L.F_D_CODE 和 L.F_T_Code 列跨度>
标签: sql-server query-optimization