3

しばらく最適化に取り組んできましたが、これをクラックすることはできません。

クエリ:

SELECT `field` FROM `table` WHERE `column_id` = 12341

インデックス:

ALTER TABLE `table`
ADD INDEX `column_id` (`column_id`);

Query(EXPLAIN SELECT field FROM table WHERE column_id = 12341)の説明は、50.000行があることを示しています。ただし、実際には、column_id = 12341の列は20.000行しかありません。

  • EXPLAIN は、それが column_id インデックスを使用していることを示しています
  • ただし、「50.000」行があることがわかります
  • 実際には20.000行しかありません
  • EXPLAIN行が推定値であることは知っていますが、これは非常に簡単なインデックスです..
  • これはinnodbです
  • テーブルの最適化/テーブルの分析を試みました..

MySQLは行の推定数を使用して適切なインデックスを選択するため、これは迷惑になる可能性があります。

私が知らないインデックス作成のトリックはありますか?

4

1 に答える 1

0

(すでにリンクされた回答で説明されているように)結果セットで期待される数ではなく、処理された行数を示すため、との比較は実際countexplainは有効ではありません。explain

于 2013-07-03T23:37:08.677 に答える