woodfighter: Datenbank Mikro-optimierung

Beitrag lesen

Tach,

  • Sind Indizes notwendig und sinnvoll

ja

oder eher kontraproduktiv?

fast nie, im Prinzip höchstens, wenn sehr viel geschrieben und selten gelesen wird oder die Indices schlecht gewählt sind (ich glaube ein Unique Index auf eine Boolean-Spalte ist dafür das Beispiel). Ich würde vermuten, dass ein kombinierter Index über beide Spalten hier die schnellste Variante ist, aber das verrät dir im Zweifelsfalle EXPLAIN.

SELECT region
FROM geoip
WHERE
1591278000 BETWEEN begin_ip_num AND end_ip_num
SELECT region
FROM geoip
WHERE
1591278000 >= begin_ip_num AND 1591278000 <= end_ip_num
  • Mein Gefühl sagt mir, dass BETWEEN schneller sein wird. Gibt es da Erfahrungswerte?

Es würde mich wundern, wenn das tatsächlich einen Unterschied machen würde, das erste ist nur eine andere Schreibweise für das zweite.

Da es theoretisch nur maximal einen passenden Datensatz gibt, werde ich LIMIT 1 verwenden. Bricht MySQL tatsächlich nach dem ersten Fund ab?

Wenn du nicht noch sortierst, oder weitere Bedingungen hast, die es davon abhalten.

mfg
Woodfighter