审查有没有像MySQL的许多行通过简单查询
CREATE TABLE `tb_tag_article` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tag_id` int(16) NOT NULL,
`article_id` int(16) NOT NULL,
PRIMARY KEY (`id`),
KEY `key_tag_id_article_id` (`tag_id`,`article_id`) USING BTREE,
) ENGINE=InnoDB AUTO_INCREMENT=365944 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
当我这样的查询表tb_tag_article,结果是。
SELECT count(*) FROM tb_tag WHERE tag_id = 43
但当我解释这样的查询
EXPLAIN SELECT count(*) FROM tb_tag WHERE tag_id = 43
检查的行是。
+------+-------------+----------------+------+-----------------------+-----------------------+---------+-------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------------+------+-----------------------+-----------------------+---------+-------+-------+-------------+
| 1 | SIMPLE | tb_tag_article | ref | key_tag_id_article_id | key_tag_id_article_id | 4 | const | 13634 | Using index |
+------+-------------+----------------+------+-----------------------+-----------------------+---------+-------+-------+-------------+
查询使用索引,但检查行数大于实际数据数。 什么问题?
让我猜:你的桌子包含13k行和5k他们有tag_id 43 – 2014-10-06 14:51:41