1

次のクエリから一部の限られたレコードを表示したいのですが、結合を使用してクエリで実行される scan の合計数を減らし、実行を高速化するにはどうすればよいですか?

クエリ::

select ml.*,m.title as medianame,mt.name as media_type,d.device_name as devicename,
SUBTIME(ml.end_time,ml.start_time) as playback_duration,d.client_id
from device_media_log ml left join media m on m.media_id = ml.media_id left join device d on d.device_id = ml.device_id
left join media_type mt on m.media_type_id = mt.media_type_id
order by ml.play_date desc,ml.start_time desc,ml.end_time desc;

すべてのテーブルには、必要なインデックスが含まれています。

4

1 に答える 1

0

可能な限り where 句を使用することをお勧めします。

ml.*,m.title を medianame として、mt.name を media_type として、d.device_name を devicename として、SUBTIME(ml.end_time,ml.start_time) を Playback_duration として選択し、d.client_id を device_media_log から ml left m.media_id でメディア m に参加= ml.media_id は d.device_id でデバイス d に参加しました = ml.device_id は m.media_type_id で media_type mt に参加しました = mt.media_type_id WHERE SOMETHING=SOMETHING AND SOMETHING=SOMETHING ml.play_date desc,ml.start_time desc,ml による順序。 end_time デスク;

于 2013-02-08T10:50:06.373 に答える