Hallo Forum,
Lange hab ich jetzt versucht selbst eine Lösung für mein "Problemkind" zu finden und zu basteln.
Ich weiß mittlerweile - eigendlich erst seit heute - dass bei einem mehrspaltigen Index die Spalten in der Reihenfolge stehen sollen, wie es auch in der WHERE Klausel steht.
Mein Problem ist aber dass ich keinen Sinnvollen Index setzen kann - hier der Grund:
Ich habe eine Tabelle mit 9 Spalten
Spalte 1 => id (primaryKey)
Spalte 2-6 => Chars, Varchars, Int (Je nachdem was in der Spalte eingetragen wird)
Spalte 7-9 => int, char, char
Spalte 1 ist eh logisch und wird hier für den Index nicht benötigt.
Spalte 7-9 sind immer automatisch bei einem Query dabei und ganz wichtig.
Spalte 2-6 können je nachdem was der User sucht varieren.
Ein Beispiel:
.) User sucht in Spalte 2 und 3 - 7-9 kommt aut. wieder dazu
.) User sucht in Spalte 2,3,4 - 7-9 kommt wieder aut. dazu
.) User sucht 6 - 7-9 kommt wieder dazu
Ich könnte jetzt für jede erdenklich Variation einen Index setzen und mir dann spätestens nach 10 Minuten die Kugel geben, weil die Inserts und Updates nie wieder fertig werden - das ist nicht Ziel.
Bringt es etwas wenn ich einen Index über alle relevanten Spalten lege auch wenn lt. Query dann nur wie im letzten Beispiel 6,7,8,9 benötigt wird.
Was ich mal probiert habe war - weil es unheimlich schnell ging in einem anderen Bereich der Seite - das ganze mittels FULLTEXT zu lösen - hat mir aber nur einen dezenten Absäufer gebracht weil der ewig lange gebraucht hat bis die Ergebnisse gelistet wurden und ausserdem nicht alle Spalten mit einbezogen werden konnten, da FULLTEXT nur für CHAR, VARCHAR, BLOB geht.
Wie soll ich hier einen sinnvollen Index aufbauen, ohne mir die INSERT's und UPDATE's zu killen.
In dieser Tabelle befinden sich grad mal 250.000 Datensätze, die in Bälde die 500.000er Grenze überschreiten werden.
Also kein Riese - und dauern tut das ganze als wären es 50 Mio. Datensätze.
Vielen Dank!
Lange hab ich jetzt versucht selbst eine Lösung für mein "Problemkind" zu finden und zu basteln.
Ich weiß mittlerweile - eigendlich erst seit heute - dass bei einem mehrspaltigen Index die Spalten in der Reihenfolge stehen sollen, wie es auch in der WHERE Klausel steht.
Mein Problem ist aber dass ich keinen Sinnvollen Index setzen kann - hier der Grund:
Ich habe eine Tabelle mit 9 Spalten
Spalte 1 => id (primaryKey)
Spalte 2-6 => Chars, Varchars, Int (Je nachdem was in der Spalte eingetragen wird)
Spalte 7-9 => int, char, char
Spalte 1 ist eh logisch und wird hier für den Index nicht benötigt.
Spalte 7-9 sind immer automatisch bei einem Query dabei und ganz wichtig.
Spalte 2-6 können je nachdem was der User sucht varieren.
Ein Beispiel:
.) User sucht in Spalte 2 und 3 - 7-9 kommt aut. wieder dazu
.) User sucht in Spalte 2,3,4 - 7-9 kommt wieder aut. dazu
.) User sucht 6 - 7-9 kommt wieder dazu
Ich könnte jetzt für jede erdenklich Variation einen Index setzen und mir dann spätestens nach 10 Minuten die Kugel geben, weil die Inserts und Updates nie wieder fertig werden - das ist nicht Ziel.
Bringt es etwas wenn ich einen Index über alle relevanten Spalten lege auch wenn lt. Query dann nur wie im letzten Beispiel 6,7,8,9 benötigt wird.
Was ich mal probiert habe war - weil es unheimlich schnell ging in einem anderen Bereich der Seite - das ganze mittels FULLTEXT zu lösen - hat mir aber nur einen dezenten Absäufer gebracht weil der ewig lange gebraucht hat bis die Ergebnisse gelistet wurden und ausserdem nicht alle Spalten mit einbezogen werden konnten, da FULLTEXT nur für CHAR, VARCHAR, BLOB geht.
Wie soll ich hier einen sinnvollen Index aufbauen, ohne mir die INSERT's und UPDATE's zu killen.
In dieser Tabelle befinden sich grad mal 250.000 Datensätze, die in Bälde die 500.000er Grenze überschreiten werden.
Also kein Riese - und dauern tut das ganze als wären es 50 Mio. Datensätze.
Vielen Dank!
Kommentar