2016-08-03 7 views
1

私は10kを超える行を持つMySQLデータベースを持っています。インデックス付きのクエリのパフォーマンスを向上させる

$sql = 'SELECT *, DATE_FORMAT(m.time, "%d.%m.%Y %H:%i:%s") AS date 
    FROM markers m,pid p 
    WHERE m.time >=DATE_SUB(NOW(), INTERVAL 24 HOUR) 
    AND m.pidID=p.id'; 

私はテーブルのインデックスについては読んだことがあるが、私のクエリにそれを適応させることができませんでした:私は24時間以内にすべての行を取得するクエリを実行すると、それは結果を得るために非常に長い時間がかかります。誰もが上記のクエリをインデックス化する方法を説明してくださいので、クエリは完全なテーブルスキャンではありませんか?

+0

インデックスはクエリに表示されません。彼らはテーブルの構成です。 'm.time'、' m.pid'と 'p.pid'にインデックスを追加しようとします – litelite

+0

[" mysqlテーブルにインデックスを追加するにはどうすればいいですか "](http://stackoverflow.com/questions)/3002605/how-do-i-add-index-to-mysql-tables) –

+0

インデックスはクエリの一部ではありません。クエリを実行する前にインデックス*を追加するには、テーブルを変更する必要があります。 –

答えて

0

クエリは一般に、WHEREJOIN...ONの条件(およびORDER|GROUP BYのリスト)で使用されるフィールドのインデックスから利益を得ます。

関連する問題