angenommen ich habe eine MySQL Tabelle mit 100.000 Zeilen. Die erste Spalte ist "id INT PRIMARY KEY", die zweite " x INT UNIQUE" oder ähnlich. Auf die zweite Spalte "x" finden zum einen regelmäßig "ORDER BY x"-Abfragen statt, zum anderen werden abundzu x-Werte eingefügt, bzw. ganze x-Wert-Blöcke verschoben (z.B. x=x+1). Wie gestalte/indiziere ich die Tabelle am effizientesten?
schalte mal delay_key_write ein, besonders für häufige INSERT und UPDATE Operationen.
Damit werden die Keys nicht zwangsweise auf die Festplatte geschrieben, sondern erst wenn der Mysql-Server "eine Hand frei" hat.
Außerdem solltest du darauf achten, dass sämtliche keys in den RAM passen. key_buffer_size = ??? (mindestens so groß wie die Summer der Größe aller .MYI Dateien) dafür aber sort_buffer_size klein halten (z.B. 250KB)
zusätzlich noch key_cache_division_limit = 60 Grüße Oesi Ich weiß, dass ich nicht weiß... (Sokrates)
(Dieser Beitrag wurde von oesi50 am 9. Feb 2009, 15:29 geändert)
Ich habe festgestellt, dass x=x+1 u.ä. Operationen auf UNIQUE-Spalten nicht funktionieren, weshalb ich UNIQUE entfernt habe. Ich denke, dass jegliche Sortierfunktionen jetzt wesentlich ineffizienter ausgeführt werden als vorher. Hab ich da jetzt einfach Pech oder kann ich die Spaltendefinition noch intelligenter gestalten?