gpt4 book ai didi

mysql - Mysql 5.7 按varchar列排序慢查询

转载 作者:行者123 更新时间:2023-11-29 06:56:10 24 4
gpt4 key购买 nike

我有一个带有 Mysql 5.7.19 的 Linux 虚拟机。记录慢速查询和 log-queries-not-using-indexes 我注意到这个查询:

# Time: 2017-08-05T11:10:36.881359Z
# User@Host: root[root] @ localhost [127.0.0.1] Id: 2070
# Query_time: 0.000381 Lock_time: 0.000145 Rows_sent: 1 Rows_examined: 35
SET timestamp=1501931436;
SELECT * FROM `cliente` order by denominazione;

因为我设置了long_query_time = 5,似乎查询被记录,因为它不使用索引。解释我的查询:

id  select_type     table   partitions  type    possible_keys   key     key_len     ref     rows    filtered    Extra   
1 SIMPLE cliente NULL ALL NULL NULL NULL NULL 35 100.00 Using filesort

这是我的表 ddl:

  CREATE TABLE `cliente` (
`id` bigint(20) NOT NULL,
`creatoDa` varchar(255) DEFAULT NULL,
`dataInserimento` datetime DEFAULT NULL,
`dataUltimaModifica` datetime DEFAULT NULL,
`modificatoDa` varchar(255) DEFAULT NULL,
`ENTITY_UID` varchar(36) NOT NULL,
`version` int(11) DEFAULT NULL,
`attivo` tinyint(1) NOT NULL DEFAULT '1',
`denominazione` varchar(255) NOT NULL,
`email` varchar(255) DEFAULT NULL,
`note` longtext,
`password` varchar(255) NOT NULL,
`username` varchar(255) NOT NULL,
`dataUltimoPing` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



ALTER TABLE `cliente`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `UK_75j8vo25r1ws35vccamep965h` (`ENTITY_UID`),
ADD UNIQUE KEY `UK_sgwkt4eif8lb1e5miakwnu7q9` (`username`),
ADD KEY `idx_denominazione` (`denominazione`),
ADD KEY `idx_attivo` (`attivo`)

我想知道为什么Mysql不使用索引来排序结果,考虑到我在面值(varchar(255))字段上有一个索引<768。

最佳答案

MySQL 优化器是基于成本的,并且已检测到全表扫描是检索具有有限数量的行/记录的记录的最快方法。对于这些少数现有记录来说,不进行随机磁盘 I/O 来检索记录要慢得多。附加记录将自动导致优化器在适当的时候利用您的索引。

关于mysql - Mysql 5.7 按varchar列排序慢查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521381/

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