1

私はこのようなテーブルを持っています

|customer_reference|date_and_time|
       111          2013-01-01
       111          2013-01-02
       111          2013-01-03
       222          2013-01-01
       222          2013-01-02
       333          2013-01-01

customer_referenceに従って、最後のdate_and_timeの行を取得したいと思います。私はいくつかのクエリを書きましたが、それは非常に遅いです。そのような私のクエリ。

SELECT MAX(date_and_time) AS time
FROM t_table GROUP BY customer_reference

そのテーブルには600.000を超える行があります。

4

3 に答える 3

2

列にインデックスを追加しcustomer_referenceて、以下のクエリを実行するだけです

SELECT customer_reference, MAX(date_and_time) AS time
FROM t_table 
GROUP BY customer_reference
于 2013-01-09T08:07:07.153 に答える
1

テーブルにインデックスを追加するとより良い

    ALTER TABLE `t_table` ADD INDEX `customer_reference` (`customer_reference`)

次にクエリを実行します

于 2013-01-09T08:10:37.977 に答える
1

インデックスは、MySQLテーブルで有効にしてパフォーマンスを向上させることができる機能です。

MySQLの列インデックスを使用してクエリパフォーマンスを最大化する列にインデックスを作成する必要がありますcustomer_reference

作成時にインデックスを定義していない場合は、次の構文を使用して、後でいつでもインデックスを追加できます。

CREATE INDEX id_index ON t_table(customer_reference);
于 2013-01-09T08:14:49.220 に答える