为什么同样的查询产生2个不同的MySQL解释结果?

Xai*_*oft 1 mysql explain

我有一个简单的SELECT * From tv Where Client = 'ABCD'查询,当我这样做时EXPLAIN EXTENDED,它给了我两个不同的结果.执行查询时,其中一个需要几毫秒,而另一个需要大约3秒.为什么它会给出两个不同的解释结果以及导致缓慢的原因?

慢查询:

慢查询

快速查询:

快速查询

spe*_*593 8

为什么同样的查询产生2个不同的MySQL解释结果?

A因为有些不同.如果不在查询中,则在两个表或数据库实例之间.

所有这些都应该进行审查,以找出差异:

  • 它们是否运行在相同版本的MySQL(SHOW VARIABLES LIKE '%version%')上
  • 实例是否运行相同的characterset(SHOW [GLOBAL] VARIABLES LIKE 'character_set%')
  • 表列是否使用相同的characterset(SHOW CREATE TABLE)
  • 两个表都使用相同的存储引擎吗?(SHOW CREATE TABLE)
  • 如果主键是复合键,则列的顺序是相同的(SHOW CREATE TABLE)
  • 统计数据是最新的和准确的吗?
  • 由于大量的插入,更新,删除活动,其中一个表是支离破碎的吗?
  • 两个服务器上的MyISAM密钥缓存或InnoDB缓冲区大小相同吗?


Ped*_*ado 6

我通过更新表统计信息来解决。

在 MySQL 上我做了:

OPTIMIZE TABLE [tablename]
Run Code Online (Sandbox Code Playgroud)