私はmysqlデータベースを使用しています。クエリは、ワークベンチツールを介して直接実行されます。クエリは次のようになります。
SELECT records.received, data.value
FROM product
JOIN records
on product.productId= records.productId
JOIN data
ON records.recordId = data.recordId
JOIN dataTypes
ON data.typeId = dataTypes.typeId
ORDER BY records.received DESC
データテーブルには100万のエントリがあります。このステートメントの実行は7秒間続きます。その理由は、ORDERBY句にあるようです。
誰かが私にそれをスピードアップする方法のヒントを教えてもらえますか?
編集:申し訳ありませんが、構造を追加するのを忘れました:
products:PKはproductIdです(5つのエントリしかありません)
レコード:PKはrecordId、FKはproductIdです
データ:PKはdataIdおよびFKrecordIdおよびtypeIdです
dataTypes:PKはtypeIdです
records.receivedとすべてのPKおよびFKにインデックスがあります。
EXPLAINの出力は次のとおりです。
id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
1,SIMPLE,products,const,PRIMARY,PRIMARY,4,const,1,"Using index
1,SIMPLE,dataTypes,const,PRIMARY,PRIMARY,4,const,1,"Using index"
1,SIMPLE,records,ref,"PRIMARY,productId",productId,4,const,127142,"Using where"
1,SIMPLE,data,ref,"recordId,typeId",recordId,4,top70.records.recordId,1,"Using where"