Grundsätzlich habe ich eine Datenbank von Worten,Objective c - SQLite Auswählen Zufallsreihe mit einem anderen Wert
Diese Datenbank eine rowID (Primärschlüssel) enthält, das Wort und die Wortlänge als Tabellenspalten.
Ich möchte eine zufällige Zeile mit der Länge = x auswählen und das Wort in dieser Zeile abrufen.
Dies ist für ein iPhone-Spiel Projekt und es ist hohe Priorität, dass die Abfragen so schnell wie möglich sind (die Suchvorgänge werden in einem Spiel gemacht).
Zum Beispiel:
SELECT * FROM WordsDB WHERE >= (abs(random()) %% (SELECT max(rowid) FROM WordsDB)) LIMIT 1;
Diese Abfrage ist wirklich schnell an eine zufällige Reihe BY RANDOM viel schneller als ORDER Auswahl() LIMIT 1, aber wenn ich die Wortlänge auf die Abfrage hinzufügen ich Fragen :
SELECT * FROM WordsDB WHERE length = 9 AND rowid >= (abs(random()) %% (SELECT max(rowid) FROM WordsDB)) LIMIT 1
Vermutlich weil die zufällige Zeile nicht immer eine Länge von 9
hat ich frage mich, was der schnellste/effizienteste Weg, dies zu tun wäre.
Vielen Dank für Ihre Zeit
Hinweis: Die 2% Symbole sind, weil es in Objective-C, und die Abfrage wird als eine Zeichenfolge ist.
Was sind die Probleme? – hamstergene