如果我有一个包含数百万条目的庞大数据库并且我需要的只是与特定年份(比如 2015 年)相关的信息,如果我使用以下查询,我希望你们中的任何人都能提供帮助,性能方面,这将是最佳实践,还是有另一种方法可以进行更好的查询,
CREATE INDEX table1_idx ON table1 (date_column);
SELECT text, date_column
FROM table1
WHERE datepart(yyyy, date_column) = 2015;
非常感谢与此相关的任何帮助。
最佳答案
如果这是关于 SQL Server 的,那不是这样做的方法。在字段上使用任何函数都会导致不可 SARGable。
总是像这样使用正确的搜索条件:
SELECT text, date_column
FROM table1
WHERE date_column >= '20150101' and date_column < '20160101'
您可能还想考虑将 text
添加为包含列以防止键查找:
CREATE INDEX table1_idx ON table1 (date_column) include (text)
关于mysql - 从性能的角度来看,以下 SQL 是好的还是坏的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950827/