-2

それぞれ約5,000行のテーブルが3つあります

ユーザー id, email

FLASH2TIMBRES id, id_user, photo_name, valid

投票 id, id_user, id_photo

このクエリを使用すると、サイトの実行が非常に遅くなります。

SELECT  users.email, 
        flash2timbres.id, 
        flash2timbres.id_user, 
        flash2timbres.photo_name, 
        flash2timbres.time, 
        COUNT(votes.id ) AS nbvotes 
FROM    users, flash2timbres 
        LEFT JOIN votes 
            ON flash2timbres.id = votes.id_photo 
WHERE   valid = 1 AND 
        flash2timbres.id_user = users.id 
GROUP    BY flash2timbres.id 
ORDER BY `flash2timbres`.`id` DESC 
LIMIT 0, 30

誰かがそれを改善するのを手伝ってくれますか?

編集: インデックスは次のとおりです。

users.id PRIMARY (Type BTREE) Unique  
flash2timbres.id PRIMARY (Type BTREE) Unique  
votes.id PRIMARY (Type BTREE) Unique
4

2 に答える 2

0

投票テーブルの id_photo と、flash2timbres テーブルの id_user 列にインデックスを追加します。

于 2013-02-19T10:37:40.363 に答える
0

まだ行っていない場合は、テーブルのインデックス作成を確認する必要があります: http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html。結合は、インデックス付きフィールドで実行しないと、特にデータ セットが大きくなると、非常に遅くなります。

インデックスを追加したら、クエリの前に EXPLAIN を追加して実行します。key結果は、クエリが新しいインデックス (列内) を使用していることを確認します。

于 2013-02-19T09:21:39.737 に答える