mysql> select count(*) from table where relation_title='xxxxxxxxx'; +----------+ | count(*) | +----------+ | 1291958 | +----------+ mysql> explain select * from table where relation_title='xxxxxxxxx'; +----+-------------+---------+- | id | select_type | rows | +----+-------------+---------+- | 1 | SIMPLE | 1274785 | +----+-------------+---------+-
我认为“请从“ relation_title =’xxxxxxxxx’的表中选择*”;通过索引返回relationship_title =’xxxxxxxxx’的行。但这比实际数字小。
它显示了要获得结果所经过的行数。
数据错误的原因是EXPLAIN不准确,它会基于存储在表中的信息来猜测数据。
这是非常有用的信息,例如在许多表上执行JOINS时,并且您要确保没有遍历整个联接表以获取每一行的信息。
这是对608行表的测试。
SELECT COUNT(id) FROM table WHERE user_id = 1
结果:
COUNT(id) 512
这是解释
EXPLAIN SELECT COUNT(id) FROM table WHERE user_id = 1
id rows 1 608