查询执行需要更多时间
Posted
技术标签:
【中文标题】查询执行需要更多时间【英文标题】:query execution taking more time 【发布时间】: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 列跨度>
【参考方案1】:
在同一张表上使用 INNER JOIN 尝试以下查询:
SELECT DISTINCT L.F_T_CODE AS F_T_CODE, PHT.F_PHRAS AS F_PHRAS
FROM PHRASE_LINK L
INNER JOIN PHRASE_LINK L1 ON L.F_D_CODE != L1.F_T_CODE
INNER JOIN PHRAS_TR PHT ON L.F_P_ID = PHT.F_P_ID
WHERE PHT.F_PHRAS LIKE '%a%' `enter code here`
AND PHT.F_LAN = 'EN' ORDER BY PHT.F_PHRAS
OFFSET 100000 ROWS FETCH NEXT 10 ROWS ONLY;
【讨论】:
谢谢。不过这也需要一些时间。以上是关于查询执行需要更多时间的主要内容,如果未能解决你的问题,请参考以下文章