Für jede interessante Anzahl von Zeilen ist der optimale Weg (für die meisten Definitionen von "optimal"), mit Schlüssel auf einen einzelnen zufälligen Datensatz zuzugreifen, ein Index zu erstellen.
CREATE INDEX my_index ON my_table (key_column);
oder in einer Active Migration:
add_index(:my_table, :key_column)
Datenbank-Indizes verwendet in der Regel binäre Suche, B-trees oder ähnliches verwendet wird, die zwischen Lagerkosten und Zeit für den Abruf und Aktualisierung eine gute Balance bietet.
Sicherstellung der Index verwendet wird, sollte für Single-Table-Operationen relativ einfach sein:
MyTable.find_by_key_column('ABC123')
zum Beispiel sollte wie folgt erzeugen (überprüfen development.log):
SELECT * FROM my_table WHERE (key_column = 'ABC123')
die sogar Der relativ unscheinbare Optimierer von MySQL sollte kein Problem haben, optimal zu laufen.
Zeilenspeicherung sollte kein Problem für die individuelle Zeilenabfrage sein, was ein Glück ist, da es nicht viel gibt, was Sie tun können, um es trotzdem zu kontrollieren. Für die MySQL-Performance sollten Sie MyISAM über InnoDB als Speicher-Engine wählen, vorausgesetzt Ihre Definition von "optimal" enthält nicht "zuverlässigste".