create table foo (id int(11) auto_increment, value varchar(255))
テーブルには約10,00,000行が含まれており、select id、fooからの値などの選択操作の実行には約2〜3秒かかります。ここで速度を改善するにはどうすればよいですか
select id, foo からの値は、テーブル全体を返します。言及した 2 ~ 3 秒には、結果の転送にかかる時間が含まれる場合があります。これは、多くの場合、データベース サーバーが実際のクエリを実行するのにかかる時間よりもはるかに長くなる可能性があります。
(投稿したクエリのように) WHERE 句がなく、100 万行を選択している場合、クエリの実行に 2 ~ 3 秒かかるのではなく、実際にはデータを送信するのに時間がかかる可能性が高くなります。通信網。
あなたのアプリケーションは実際に一度に 100 万のデータベース レコードを使用できますか? そのデータをユーザーに表示する場合は、ページングする可能性が高いため、より管理しやすいチャンクでデータを選択するようにクエリを変更してください。
SELECT id, value
FROM foo
LIMIT $offset, $pgsize -- these two values will come from your application
これらすべての行を一度に本当に必要とする場合は、それらをキャッシュすることをお勧めします。
where 句で使用されるフィールドにインデックスを追加します。
CREATE INDEX id_index ON foo (id) USING BTREE;
詳細については、http://dev.mysql.com/doc/refman/5.0/en/create-index.htmlを参照してください。