首页 > 解决方案 > 有没有更好的方法来优化这个 SQL 查询?

问题描述

假设我的表有数百万条记录。

以下列具有索引:

这是我的查询:

SELECT TOP (1000) T.TIME, T.TYPE, F.NAME,
B.NAME, T.MESSAGE
FROM MY_TABLE T
LEFT OUTER JOIN FOO F ON F.ID = T.FID
LEFT OUTER JOIN BAR B ON B.ID = T.BID
WHERE T.TYPE IN ('success', 'failure')
AND T.DATE BETWEEN 1592585183437 AND 1594232320525
AND T.UNIQUE_ID = "my unique ID"
ORDER BY T.DATE DESC

我的问题是,如果我的表中有大量记录,我是否会给自己带来任何麻烦?这可以进一步优化吗?

标签: sql

解决方案


我的问题是,如果我的表中有大量记录,我是否会给自己带来任何麻烦?

错误的问题。只要你只要求你需要的数据,你就需要它。任何麻烦都意味着你仍然需要它。

查询看起来和它一样好。我以某种方式怀疑 TOP 10000(这是很多数据,除非您以某种方式对其进行压缩)。

问题更多的是您是否有适当的索引。没有适当的索引。我也不会对 TYPE 使用这样的字符串,但问题是关于查询,而不是表设计中的可能失败。

检查索引。


推荐阅读