我有一箇舊的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。 –