mysql - 从性能的角度来看,以下 SQL 是好的还是坏的做法?

标签 mysql sql sql-server

如果我有一个包含数百万条目的庞大数据库并且我需要的只是与特定年份(比如 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/

相关文章:

mysql - 混淆 MySQL 备份中的个人数据

php - 如何计算 MySQL 查询的大小?

sql - SQL Server:按给定因子多次选择一行

mysql - 在MySQL中使用NHibernate guid.comb主键时如何避免碎片?

mysql - SQL:计算某个时间范围内列值的出现次数并按计数排序

mysql - 如何使用 MATCH...AGAINST 查询搜索文本?

mysql - 使用大小写更新 sql 并以正确的大小写更新值

sql - 如何使复杂的命名范围与关联和其他命名范围 [rails] 配合得很好

mysql - MySQL中如何使用触发事件来防止某个用户被删除

c# - 我们可以取消发给 sql server 的查询吗?