Pau*_*and 10 mysql indexing select explain
我有一个遗留系统的表,没有主键.它记录了工厂发布材料的交易数据.
为简单起见,我们可以说每行包含job_number,part_number,quantity&date_issued.
我在日期发布列中添加了一个索引.当我运行EXPLAIN SELECT*FROM issued_parts WHERE date_issued>'20100101'时,它显示如下:
+----+-------------+----------------+------+-------------------+------+---------+------+---------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------------+------+-------------------+------+---------+------+---------+-------------+ | 1 | SIMPLE | issued_parts | ALL | date_issued_alloc | NULL | NULL | NULL | 9724620 | Using where | +----+-------------+----------------+------+-------------------+------+---------+------+---------+-------------+
所以它看到了关键,但它不使用它?有人可以解释原因吗?
Rol*_*DBA 10
有些东西告诉我MySQL Query Optimizer正确决定了.
这是你怎么说的.运行这些:
行数
SELECT COUNT(1) FROM issued_parts;
Run Code Online (Sandbox Code Playgroud)
匹配您的查询的行数
SELECT COUNT(1) FROM issued_parts WHERE date_issued > '20100101';
Run Code Online (Sandbox Code Playgroud)
如果您实际检索的行数超过表总数的5%,则MySQL查询优化器会决定执行全表扫描的工作量会减少.
现在,如果您的查询更精确,例如,使用以下内容:
SELECT * FROM issued_parts WHERE date_issued = '20100101';
Run Code Online (Sandbox Code Playgroud)
那么,你将完全得到一个不同的EXPLAIN计划.
归档时间: |
|
查看次数: |
5982 次 |
最近记录: |