我在分析使用HeidiSQL的一些查询的性能,我遇到过这样的情况:我发现EXPLAIN命令返回的行数是与表中包含的行不同。在EXPLAIN,count(1)和table content之间的MySQL查询差异
查询:
EXPLAIN SELECT COUNT(1)从虚拟;结果:
- SELECT_TYPE:SIMPLE
- 表:虚拟
- 类型:指数
- 键:idxF2F3
- key_len:10
- 行:2183
- 额外的:使用索引
EXPLAIN SELECT * FROM Dummy;结果:
- SELECT_TYPE:SIMPLE
- 表:样品
- 类型:ALL
- 行:2183
SELECT COUNT(1)从虚拟;结果:
- SELECT * FROM Dummy;结果:15列的表X 2195行
我还使用了命令
select field1 count(\*)
from table\_name
group by field1
having count(\*) > 1
为表(f2和f3)的密钥和它给出了F3没有重复。对于f2,返回有115,53,565,82,35,37,314,196,41,118,76,29,158,68和308个重复的行,但这里没有错。
CREATE TABLE Dummy(
`f1` INT(11) NULL DEFAULT NULL,
`f2` INT(11) NULL DEFAULT NULL,
`f3` INT(11) NULL DEFAULT NULL,
`f4` VARCHAR(254) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`f5` VARCHAR(254) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`f6` VARCHAR(8) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`f7` DATETIME NULL DEFAULT NULL,
`f8` BIGINT(20) NULL DEFAULT NULL,
`f9` BIGINT(20) NULL DEFAULT NULL,
`f10` DATETIME NULL DEFAULT NULL,
`f11` DATETIME NULL DEFAULT NULL,
`f12` BIGINT(20) NULL DEFAULT NULL,
`f13` DOUBLE NULL DEFAULT NULL,
`f14` INT(11) NULL DEFAULT NULL,
`f15` INT(11) NULL DEFAULT NULL
INDEX `idxF2F3` (`f2`, `f3`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;
任何帮助:
该表按这个定义?我已经搜索过任何类似的问题
谢谢你的回答@ ollie-jones!更新统计信息后,EXPLAIN命令现在返回2205行。我是正确的,假设这是__表中__行_number和_key \ _len_的总和的结果? –