MySQL: Vergleich des Ganzzahl-und string-Feld mit dem index

Tabelle a_table hat index auf string_column.

Ich habe eine Abfrage:

SELECT * FROM a_table WHERE string_column = 10;

Ich verwendet EXPLAIN zu finden, die keine Indizes verwendet werden.

Warum? Könnten Sie mir helfen mit MySQL-link zur Dokumentation?

Aktualisiert: Sandbox (SQL Fiddle)

  • Finden Sie auf dieser Seite dev.mysql.com/doc/refman/4.1/en/mysql-indexes.html .. 3. Punkt Comparison of dissimilar columns may prevent use of indexes if values cannot be compared directly without conversion. Suppose that a numeric column is compared to a string column. For a given value such as 1 in the numeric column, it might compare equal to any number of values in the string column such as '1', ' 1', '00001', or '01.e1'. This rules out use of any indexes for the string column.
  • Tatsächlich, 10 nicht eine Spalte (ich sah, dass dieser text in der Dokumentation vor). So kann es in eine Zeichenfolge konvertiert werden, die der erforderlichen Art.
  • Prüfen Sie das sqlfiddle.com/#!2/f4807/1 für string-zu-int-Konvertierungs-index verwendet wird, während für int zu string folgt daraus nicht, obwohl ich force index..
InformationsquelleAutor Dmitry | 2013-05-28
Schreibe einen Kommentar