SQLite でのランダムな行の選択
多くのデータベース環境では、ランダムな行を選択するのは比較的簡単なタスクです。ただし、SQLite では、典型的な MySQL 構文 (SELECT * FROM table ORDER BY RAND() LIMIT X) では、残念ながら望ましい結果が得られません。
これにより、ランダムな行を選択する同等の方法はあるのかという疑問が生じます。 SQLite で?
パフォーマンス向上ソリューション
答えはここにありますSQL パフォーマンスの最適化において。パフォーマンスを大幅に向上させるには、次のステートメントをお勧めします:
SELECT * FROM table WHERE id IN (SELECT id FROM table ORDER BY RANDOM() LIMIT x)
この改善された構文は、元のアプローチの重要な非効率性に対処します。 SQL エンジンは通常、行の投影されたすべてのフィールドをメモリにロードし、並べ替え操作を実行します。ただし、この場合、インデックス付きの 'id' フィールドを並べ替えるだけで済みます。
これにより、メモリ消費と処理のオーバーヘッドが最小限に抑えられ、特にテーブルのサイズが大きくなるにつれてパフォーマンスが向上します。この方法は、RAM 使用率と CPU 使用率の両方の点でより効率的であることが証明されています。
以上がSQLite でランダムな行を効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。