1

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 のみを選択するのをやめます。しかし、他のトリックはありますか?また、このコードは本番サイトに適していますか?

4

0 に答える 0