MySQL:我可以为datetime字段编制索引吗?MySQL不会这么做的
我的大多数查询都测试不同的时间范围,每个范围的内容都是MySQL:我可以为datetime字段编制索引吗?MySQL不会这么做的,mysql,indexing,Mysql,Indexing,我的大多数查询都测试不同的时间范围,每个范围的内容都是 在不断的变化中,所以我不能在这里缓存太多。耐心地等待任何建议。。。谢谢。我有一张有725K条记录的表格,下面是我的结果: 在创建索引之前: 在无索引的情况下计数:0.59秒 无条件计数:0.8秒 在datetime字段上创建索引:2.28秒 有条件计数:0.07秒 希望这能回答你的问题 您的索引创建似乎被某些人或事打断,但我会仔细检查日志文件,看看是否有任何问题。添加索引会导致索引被填充。你有将近50万条记录,建立索引需要花费超过零的时间。
在不断的变化中,所以我不能在这里缓存太多。耐心地等待任何建议。。。谢谢。我有一张有725K条记录的表格,下面是我的结果: 在创建索引之前: 在无索引的情况下计数:0.59秒 无条件计数:0.8秒 在datetime字段上创建索引:2.28秒 有条件计数:0.07秒 希望这能回答你的问题
您的索引创建似乎被某些人或事打断,但我会仔细检查日志文件,看看是否有任何问题。添加索引会导致索引被填充。你有将近50万条记录,建立索引需要花费超过零的时间。MyISAM count*查询速度很快,因为行计数存储在表元数据中。InnODB count*的速度相对较慢,因为它必须扫描表,不能在某个地方保留一行计数,因为事务会使其不准确。是否有单独运行的清理脚本?当通过另一个mysql会话的kill终止查询时,会显示该错误代码。它可能将alter table命令视为一个失控的进程并将其终止。仅供参考:count*在InnoDB上只有在不使用任何条件的情况下才会变慢。如果指定了WHERE子句,InnoDB和MyISAM应该大致相同。
mysql> create index index_questions_on_publishedAt on questions(publishedAt);
ERROR 1317 (70100): Query execution was interrupted
mysql> select count(*) from questions;
+----------+
| count(*) |
+----------+
| 491773 |
+----------+
1 row in set (1.02 sec)
# Is it even reasonable for this query to take 1 second?
mysql> select count(*) from questions where publishedAt <= '2011-08-23 19:52:01' and publishedAt >= '2011-08-23 19:49:44';
+----------+
| count(*) |
+----------+
| 30 |
+----------+
1 row in set (0.71 sec)
MySQL info: Server version: 5.1.41-3ubuntu12.10 (Ubuntu)