2016-05-04 21 views
0

wenn ich eine MySQL-Tabelle hatte, die hat, können 300 Millionen Zeilen sagen, wie würde ich für eine Reihe Suche mitHowto effizient eine riesige MySQL-Tabelle suchen

SELECT id WHERE coloumn = "abc" ; 

am effizientesten? Kann ich die Daten so vorbereiten, dass sie beim Durchsuchen der Daten helfen? Oder analysiert es die Zeilen Zeile für Zeile?

+7

Verwenden Sie Indizes .... –

+0

Geben Sie bitte Ihr aktuelles Tabellenschema an ('SHOW CREATE TABLE') – Alex

+0

Verwenden Sie auch Limit 1, wenn Sie eine einzelne Zeile abrufen. – Poria

Antwort

1

Die SQL 101 Antwort hier ist ein Index mit CREATE INDEX:

CREATE INDEX column_index ON table_name (`column_name`) 

Dies natürlich auf Ihrem Schema abhängt. Sie können auch mehr als eine Spalte indexieren und UNIQUE Constraints anwenden, um sicherzustellen, dass jeder Wert nur einmal verwendet wird.

Bei großen Tabellen wird die Operation CREATE INDEX brutal langsam sein, um das erste Mal zu erstellen. Planen Sie daher bei Bedarf einige Ausfallzeiten ein. Einmal erstellt, wird es automatisch auf dem neuesten Stand gehalten.

+0

Danke für die Details. Es wird eine riesige Nachschlagetabelle sein. Mein Problem ist, dass ich 5 durchsuchbare Spalten und eine Antwortspalte habe, welche zu durchsuchende Spalte vom PHP-Skript entsprechend den eingegebenen Daten entschieden wird. Glauben Sie, dass eine separate Tabelle pro durchsuchbarer Spalte die bessere Lösung wäre? –

+0

Dies hängt vollständig von Ihrem Schema ab. Sie können mehr als einen Index pro Tabelle haben. Wenn Sie teilweise Übereinstimmungen finden möchten, benötigen Sie möglicherweise einen Volltextindex, der auch eine Option darstellt. – tadman