django を使用してサイトを作成しています。テストのために、サイト上の画像に関する情報 (アップローダー、オリエンテーション、説明、その他いくつか) を含む 100 万行のデータベースを作成しました。各画像には、タグ関係データベースに保存されている複数のタグがあります。テーブルにはインデックスが付けられます。
タグ関係データベースID
tag_id
= タグテーブルへの外部キー
Tag_relation
= 画像テーブルへの外部キー (100 万行)
現在、アップローダなどの画像行のタグやその他のパラメータを使用して、ユーザーが画像を検索できるページを提供しています。
これは、検索リストを作成するために実行しているクエリです。
SELECT * FROM photos_main_tb,photos_tag_relation
WHERE photos_main_tb.id=photos_tag_relation.relation_id ORDER BY photos.rating LIMIT 0,10
今、私は問題なく動作し、画像を提供しています。しかし、リミットが大きくなるにつれて、かかる時間は着実に増加し、数秒になります。
SELECT * FROM photos_main_tb,photos_tag_relation
WHERE photos_main_tb.id=photos_tag_relation.relation_id ORDER BY photos.rating LIMIT 500000,10
私ができる最適化の 1 つは、サブクエリと制限 Like を指定することでした
SELECT * FROM (photos_main_tb LIMIT 200,000,800000) ,photos_tag_relation
WHERE photos_main_tb.id=photos_tag_relation.relation_id ORDER BY photos.rating LIMIT
0,10
しかし、これは私の問題を本当に解決しません。このサイトのようにリストできるようにしたい: http://airteamimages.com/search.php . 多くの画像で遅くなることはありません。私はmysqlが初めてです。間違いを許してください。最初のクエリのように、検索で各ページをミリ秒単位で読み込めるようにしたいと考えています。
更新: 最初のコメントのように、* の代わりに id のみを選択するのをやめます。しかし、他のトリックはありますか?また、このコードは本番サイトに適していますか?