2009-07-01 21 views
1

でDISTINCT CONCATクエリを選択し、私はこのクエリを実行している:最適化は、MySQL

SELECT DISTINCT CONCAT(ALFA_CLAVE, FECHA_NACI) FROM listado GROUP BY ALFA_CLAVE HAVING count(CONCAT(ALFA_CLAVE, FECHA_NACI)) > 1 

は、それを最適化する方法はありますか?クエリは、850,000行のテーブルで2〜3時間かかります。

ALFA_CLAVEとFECHA_NACIにインデックスを追加すると機能しますか?

答えて

1

mysqlはインデックス機能を持たないため、関数/式にインデックスを付けることはできません。あなたが最初の一時テーブルにサブ選択置く場合は、いくつかの秒をオフに剃ることができ、

select concat(x.alfa_clave, x.fecha_naci) 
from 
(
    SELECT ALFA_CLAVE, FECHA_NACI 
    FROM listado 
    GROUP ALFA_CLAVE, FECHA_NACI 
    HAVING COUNT(*) > 1 
) as x 
+1

はそれを、すなわち連結して、後でこの方法を試してみてください は一時テーブル 'temp1' SELECTを作成しますALFA_CLAVE、FECHA_NACI FROM listado GROUP ALFA_CLAVE、FECHA_NACI HAVING COUNT(*)> 1; temp1からconcat(alfa_clave、fecha_naci)を選択します。 – Seth