假设我的表有数百万条记录。
以下列具有索引:
类型
日期
唯一\u id
我的问题是:
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
我的问题是,如果我的表中有成吨的记录,是否会给我自己的查询带来麻烦?能否进一步优化?
1条答案
按热度按时间n7taea2i1#
我的问题是,如果我的表中有成吨的记录,是否会给我自己的查询带来麻烦?
问错了。只要你只需要你需要的数据,你就需要它。任何麻烦都意味着你仍然需要它。
查询看起来很好。我不知何故怀疑前10000(这是一个很大的数据,除非你压缩它以某种方式)。
问题更在于你是否有合适的指数。没有合适的索引。我也不会对类型使用这样的字符串,但问题是关于查询,而不是表设计中可能出现的失败。
检查索引。