带和不带 Limit 子句的 Order by 使用不同的索引

问题描述 投票:0回答:1

有人可以解释为什么如果使用 Limit 优化器会选择不同的索引吗?

玛丽亚数据库>

EXPLAIN SELECT dms_meta.docid 
FROM dms_meta 
WHERE (dms_meta.metid = 3 and dms_meta.value = '2015-10-01') 
ORDER BY dms_meta.docid ASC limit 25;

+------+-------------+----------+-------+---------------+------------+---------+------+------+-------------+
| id   | select_type | table    | type  | possible_keys | key        | key_len | ref  | rows | Extra       |
+------+-------------+----------+-------+---------------+------------+---------+------+------+-------------+
|    1 | SIMPLE      | dms_meta | index | indx_metaid   | indx_docid | 8       | NULL | 889  | Using where |
+------+-------------+----------+-------+---------------+------------+---------+------+------+-------------+

一组 1 行(0.001 秒)

玛丽亚数据库>

EXPLAIN SELECT dms_meta.docid 
FROM dms_meta 
WHERE (dms_meta.metid = 3 and dms_meta.value = '2015-10-01') 
ORDER BY dms_meta.docid ASC;

+------+-------------+----------+------+---------------+-------------+---------+-------+--------+-----------------------------+
| id   | select_type | table    | type | possible_keys | key         | key_len | ref   | rows   | Extra                       |
+------+-------------+----------+------+---------------+-------------+---------+-------+--------+-----------------------------+
|    1 | SIMPLE      | dms_meta | ref  | indx_metaid   | indx_metaid | 4       | const | 121880 | Using where; Using filesort |
+------+-------------+----------+------+---------------+-------------+---------+-------+--------+-----------------------------+

一组 1 行(0.000 秒)

第一个查询在 0.5 秒内完成,而第二个查询则需要 6 秒以上。我在用 mysql 版本 15.1 分发 10.11.4-MariaDB

奇怪的是,在 MySql 5.0.95 上,两个查询都选择相同的索引并在不到一秒的时间内完成。

有什么建议吗?

在 select 中使用 Limit 选择不同的索引会对性能产生巨大影响,但我需要引擎每次都做出正确的选择

mysql mariadb query-optimization
1个回答
0
投票

不,我无法完全解释这个选择。但这里有些挥手。收集有关可能索引中提到的列的选择性的统计数据,并选择“最佳”一列。当查询实际运行时,它可能不是最好的。

您的查询将运行得更快

INDEX(metid, value, docid)

如果

value
TEXT
,那么呃!这听起来像一个实体-属性-值模式,它存在各种各样的问题。为此,我推荐以下内容:Entity-Attribute-Value,这是一个有助于 WordPress 的插件:WP Index Improvements

© www.soinside.com 2019 - 2024. All rights reserved.