索引可用但仍未使用-MySQL
P粉668019339
P粉668019339 2024-03-31 09:51:35
0
1
357

我们已经创建了一个索引,特别是针对一个查询,但我发现该查询需要 5 到 6 秒的时间来执行。我尝试使用以下查询获取未使用的索引,我注意到该索引列在未使用的索引列表中。请建议如何为以下查询获得更好的性能。

查询where子句:WHERE parsedjobdescription IS NOT NULL AND is_updated != 0

索引:KEYidx_jobs_feed_pa​​rsedjobdescription_is_updated(parsedjobdescription(700),is_updated)

未使用的索引:SELECT * FROM sys.schema_unused_indexes;

列:parsedjobdescription varchar(50000) DEFAULT NULL is_updated tinyint(1) DEFAULT '0'

解释查询:

可能的键:idx_jobs_feed_pa​​rsedjobdescription_is_updated,idx_is_updated

键:idx_jobs_feed_pa​​rsedjobdescription_is_updated

密钥长度:703

行数:1

过滤:50.0

P粉668019339
P粉668019339

全部回复(1)
P粉232793765

禁止使用索引的两列的三件事:

  • IS NOT NULL - 一旦达到范围,其余列将不会被使用。

  • is_updated != 0 -- 这也是一个“范围”。

  • 索引前缀有问题。

    INDEX(parsedjobdescription(700), ...  -- won't get past that prefix to use anything after it.

如果测试是 is_updated = 1,您可以翻转索引(或添加另一个索引):

INDEX(is_updated, parsedjobdescription(100))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!