Hallo Cheatah,
CREATE TABLE
t\_nref
Als Tabellenname ist das nicht wirklich sprechend... ;-)
Alle Tabellen in diesem System heißen "t_*", alle
Spalten heißen "d_*".
Das einzige, was mir auffällt (was ich aber von MySQL
nicht als Problem erwarten würde) ist, dass Du die
Spalte als VARCHAR angelegt hast[1] und als NUMBER
abfragst.
Oh - ich verstehe! Darauf hatte ich nicht geachtet.
Und es ist in der Tat die Lösung des Problems:
mysql> describe select * from t_nref where d_ref = 123;
+--------+------+-----------------+------+---------+------+--------+------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+--------+------+-----------------+------+---------+------+--------+------------+
| t_nref | ALL | i_nref_ref_time | NULL | NULL | NULL | 135838 | where used |
+--------+------+-----------------+------+---------+------+--------+------------+
1 row in set (0.01 sec)
mysql> describe select * from t_nref where d_ref = "123";
+--------+------+-----------------+-----------------+---------+-------+------+------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+--------+------+-----------------+-----------------+---------+-------+------+------------+
| t_nref | ref | i_nref_ref_time | i_nref_ref_time | 30 | const | 1 | where used |
+--------+------+-----------------+-----------------+---------+-------+------+------------+
1 row in set (0.00 sec)
mySQL konvertiert zwar implizit den Datentyp, schaltet
dabei aber den Indexzugriff ab - darauf muß man erst
mal kommen ...
[1] Wenn es sich, wie mir scheint, um eine Referenz
handelt, sollte es eh ein NUMBER-Typ sein ;-)
Wahr - aber die Tabelle stammt nicht von mir und wird
von einem closed-source-Produkt einer Schwesterfirma
angelegt und mit Daten versorgt ... ich schreibe nur
die Suchmaschine über diese Daten.
Vielen Dank - das hat mir sehr geholfen!
Michael