我有一个旧的MyISAM表,当我提交一些计数查询时,表被锁定。如果我在相同的InnoDB表上执行相同的查询,查询将得到快速执行。问题是,旧的MyISAM表仍然在生产中使用,并且负载很重,而新的不是。在mysql中解释更高的行数是好还是不好?
现在我们来谈谈我的问题和问题。当我解释在两个表中执行的查询时,我会得到一些令我困惑的结果。
这里是我两个表中正在执行查询:
SELECT COUNT(*)
FROM table
WHERE vrsta_dokumenta = 3
AND dostupnost = 0
这里是从旧的MyISAM表的解释:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE old_table ref idx_vrsta_dokumenta idx_vrsta_dokumenta 1 const 564253 Using where
这里是新的InnoDB表的解释:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE new_table ref idx_vrsta_dokumenta idx_vrsta_dokumenta 1 const 611905 Using where
正如您所看到的,新表中的行数高于旧数。
因此,如果较高的数字不好,这是否意味着新表格上的查询在完全使用后会变慢?
如果数字越大越好,那么这也许就是新表更快的原因,并且在执行一段时间后MyISAM会被锁定。
无论如何,什么是正确的?这行数是什么意思?
编辑:旧表具有比新的两列更多的列。由于旧的被分成2个表格。
请同时提供表格结构。哪些列已被索引。 “WHERE”子句中的列是否被索引? – hjpotter92
表中共有多少行? COUNT有多少人返回? – user4035
@ hjpotter92 - 我无法提供完整的表格结构,它们已关闭以供公众查看。 'WHERE'子句中的第一列被索引,其次不是。这两列都是tinyint。 –