gpt4 book ai didi

mysql - 即使查询包含索引提示,MySQL 也不会使用索引

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

  • MySQL 5.6

考虑下表:

create table mytbl (
id long primary key,
digest varchar(32)
);

digest 列包含 MD5 摘要,我通过以下方式在 digest 上创建了索引:

create fulltext index digest on mytbl (digest);

我随后检查了一个查询:

explain select count(id) from mytbl where digest = 'abcde12345ffhhg';  -- a digest in the table

计划是(表有1000行):

id | select_type | table | type | possible_keys | key | key_len | ref | rows | extra
1 | SIMPLE | mytbl | ALL | digest | NULL| NULL | NULL| 1000 | Using where

然后我调用了查询

explain select count(id) from mytbl use index (digest) where digest = 'abcde12345ffhhg';

但计划保持不变,即未使用索引 digest

为什么 MySQL 会忽略 digest 上设置的索引?


编辑

我以为我对选项 [fulltext |空间 | unique]CREATE INDEX 语句中。我删除了 fulltext index,然后创建了一个默认索引(create index digest ...)。因此,MySQL 在查询计划中使用了 digest 索引。

最佳答案

这个查询忽略了全文索引,因为它没有解释全文搜索的执行计划。

要改为解释全文搜索并使用索引,请使用 MATCH()...AGAINST():

EXPLAIN SELECT count(id) FROM mytbl WHERE MATCH(digest) AGAINST ('abcde12345ffhhg');

关于mysql - 即使查询包含索引提示,MySQL 也不会使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468946/

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