Mysql 从性能的角度来看,下面的SQL是好的还是坏的做法?
我希望你们中的任何人能提供帮助,如果我有一个拥有数百万条记录的庞大数据库,我所需要的只是与特定年份(比如2015年)相关的信息,如果我使用以下查询,从性能角度来看,这是最佳做法还是有其他更好的查询方式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; 任何与此相关的帮助都将不胜感激。如果这是
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