gpt4 book ai didi

MySQL 按索引排序仍使用 FileSort

转载 作者:行者123 更新时间:2023-11-29 11:41:01 25 4
gpt4 key购买 nike

我有一些推荐表

CREATE TABLE IF NOT EXISTS `testimonials` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`user` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`status` enum('active','test','inactive','') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'active',
`t_order` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `t_order` (`t_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=26 ;

还有一些简单的任务:启用手动排序。

<小时/>

SELECT 查询看起来:

mysql> EXPLAIN SELECT t_order, id, title, description FROM testimonials WHERE status = 'active' ORDER BY t_order DESC;

输出:

| id | select_type | table        | type | possible_keys | key  | key_len | ref  | rows | Extra                       |

| 1 | SIMPLE | testimonials | ALL | NULL | NULL | NULL | NULL | 23 | Using where; Using filesort |
<小时/>

ORDER BY 使用索引字段,但 EXPLAIN 仍然显示使用文件排序

为什么无法从索引执行排序?查询有什么内容吗?

谢谢)

最佳答案

key 列显示使用的索引,它为空。使用 where 仅意味着您正在使用 WHERE to restrict the rows .供您查询

ALTER TABLE testimonials ADD KEY(status,t_order )

是最好的索引,假设您有足够的行,那么索引就有意义。(对于极少数行,表扫描比索引更快。)

关于MySQL 按索引排序仍使用 FileSort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com