Mysql 从性能的角度来看,下面的SQL是好的还是坏的做法?

Mysql 从性能的角度来看,下面的SQL是好的还是坏的做法?,mysql,sql,sql-server,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; 任何与此相关的帮助都将不胜感激。如果这是

我希望你们中的任何人能提供帮助,如果我有一个拥有数百万条记录的庞大数据库,我所需要的只是与特定年份(比如2015年)相关的信息,如果我使用以下查询,从性能角度来看,这是最佳做法还是有其他更好的查询方式

CREATE INDEX table1_idx ON table1 (date_column);
SELECT text, date_column
FROM table1
WHERE datepart(yyyy, date_column) = 2015;

任何与此相关的帮助都将不胜感激。

如果这是关于SQL Server的,那就不是这样做的。在字段上使用任何函数都会导致不可搜索

始终使用以下正确的搜索条件:

SELECT text, date_column
FROM table1
WHERE date_column >= '20150101' and date_column < '20160101'

MySQL无法使用索引范围扫描操作,因为该函数围绕着列。必须为表中的每一行计算函数

要获得索引范围扫描操作,请对裸列进行比较

例如:

 SELECT t.text
      , t.date_column
   FROM table1 t
  WHERE t.date_column >= '2015-01-01'
    AND t.date_column  < '2015-01-01' + INTERVAL 1 YEAR
选择t.text
,t.date\u列
来自表1 t
其中t.date_列>='2015-01-01'
和t.date_栏<'2015-01-01'+间隔1年
请检查此链接。这也许能回答你的问题
 SELECT t.text
      , t.date_column
   FROM table1 t
  WHERE t.date_column >= '2015-01-01'
    AND t.date_column  < '2015-01-01' + INTERVAL 1 YEAR