【发布时间】:2012-10-15 08:07:42
【问题描述】:
我有一个拒绝使用索引的表,它总是使用文件排序。
表格是:
创建表`文章`( `ID` int(11) NOT NULL AUTO_INCREMENT, `Category_ID` int(11) 默认 NULL, `子类别` int(11) 默认为空, `CTimestamp` 时间戳 NOT NULL DEFAULT CURRENT_TIMESTAMP, `Publish` tinyint(4) 默认为空, `Administrator_ID` int(11) 默认为 NULL, `位置` tinyint(4)默认'0', 主键(`ID`), KEY `Subcategory` (`Subcategory`,`Position`,`CTimestamp`,`Publish`), KEY `Category_ID` (`Category_ID`,`CTimestamp`,`Publish`), KEY `Position` (`Position`,`Category_ID`,`Publish`), KEY `CTimestamp` (`CTimestamp`), 约束`article_ibfk_1`外键(`Category_ID`)参考`category`(`ID`) ) 引擎=InnoDB AUTO_INCREMENT=94290 默认字符集=utf8查询是:
SELECT * FROM article ORDER BY `CTimestamp`;解释是:
+----+-------------+---------+------+------------- --+------+----------+------+-------+--------------- -+ |编号 |选择类型 |表|类型 |可能的键 |关键 | key_len |参考 |行 |额外 | +----+-------------+---------+------+------------- --+------+----------+------+-------+--------------- -+ | 1 |简单 |文章 |全部 |空 |空 |空 |空 | 63568 |使用文件排序 | +----+-------------+---------+------+------------- --+------+----------+------+-------+--------------- -+当我删除“ORDER BY”时,一切正常。所有其他索引(子类别、位置等)在其他查询中运行良好。不幸的是,即使使用我的简单选择查询,也拒绝使用时间戳。我确定我在这里遗漏了一些重要的东西。
如何让 MySQL 使用时间戳索引?
谢谢。
【问题讨论】:
-
当您尝试创建索引并放置您尝试创建索引的代码时遇到什么错误(在我的网络 ajax 被阻止我无法评论那里这就是我问的原因在这里)。