sql – InnoDB排序真的很慢吗?
|
MySQL 4.x存在一个限制,它只允许MySQL为每个表使用一个索引.由于它使用了metaward_achiever.award_id列上的索引来进行WHERE选择,因此它不能使用metaward_achiever.modified上的索引进行排序.我希望你使用的是MySQL 5.x,这可能会改进它. 您可以通过对此简化查询进行说明来查看此内容: SELECT * FROM `metaward_achiever` WHERE `metaward_achiever`.`award_id` = 1507 ORDER BY `metaward_achiever`.`modified` DESC LIMIT 100 如果你可以使用WHERE选择和排序的索引来获得这个,那么你就可以了. 您还可以使用metaward_achiever.award_id和metaward_achiever创建复合索引.如果MySQL不使用它,那么您可以提示它或删除仅在award_id上的那个. 或者,如果您可以摆脱metaward_achiever.id并将metaward_achiever.award_id作为主键并在metaward_achiever.modified上添加一个键,或者更好的是将metaward_achiever.award_id与metaward.modified结合使用您的主键,那么您将真的好. 您可以尝试通过修改设置来优化文件排序.不幸的是,我没有这方面的经验,因为我们的DBA处理配置,但你可能想看看这个伟大的博客: 这是一篇关于filesort的文章: (编辑:黄山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQL 计算一个数据库中所有表记录的数量
- sql-server-2008 – 在EF4中控制ArithAbort
- sql-server – 无法在计算列上创建筛选索引
- sql-server – 将SQL Server实例根目录放在单独的驱动器上是
- entity-framework – SQL FileStream Entity Framework存储
- sqlserver中行列互换怎么完成?
- sqlserver分页有哪些办法,你知道几个?
- sql-server – 根据Sql Server中的选定行生成插入脚本?
- sql – Postgres:选择具有大于1的字段数的所有行
- 数据库 – 为什么他们使用DBMS_STATS.GATHER_TABLE_STATS?
