Hallo!
Ich benötige Hilfe beim Optimieren dieser Tabelle:
Sie speichert Paare von Strings mit einem bestimmten result *für das Paar* [nach einer clientseitigen Vergleichsoperation]. Z.b.:
blubb // 1234asdf1234asdf1234asdf1234asdf // 3.04
testtest // 1234asdf1234asdf1234asdf1234asdf // 3.04
Es wird mit ca. 300.000 Datensatzpaaren laufen.
Der Hauptquery ist:
Wie kann ich das Ganze optimieren? nur über andere Indizes?
Eine Idee wäre auch, das Paar in EINE Zeile zu Packen und dann:
select ... WHERE (str1=[a] AND str2=[b]) OR (str1=[b] AND str2=[a]) ?
Dankeschön!
Ich benötige Hilfe beim Optimieren dieser Tabelle:
Code:
CREATE TABLE `StringMatchCache` ( `str` text collate latin1_german2_ci NOT NULL, # string `id` varchar(32) collate latin1_german2_ci NOT NULL default '', # uid for pair `result` double NOT NULL default '0', # compare result KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
blubb // 1234asdf1234asdf1234asdf1234asdf // 3.04
testtest // 1234asdf1234asdf1234asdf1234asdf // 3.04
Es wird mit ca. 300.000 Datensatzpaaren laufen.
Der Hauptquery ist:
Code:
SELECT * FROM StringMatchCache a, StringMatchCache b WHERE a.str="[first string]" AND b.str="[second string]" AND a.id=b.id *** EXPLAIN *** id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE a ALL id NULL NULL NULL 6426 Using where 1 SIMPLE b ref id id 32 syncCAMPUS.a.id 10 Using where
Eine Idee wäre auch, das Paar in EINE Zeile zu Packen und dann:
select ... WHERE (str1=[a] AND str2=[b]) OR (str1=[b] AND str2=[a]) ?
Dankeschön!
Kommentar