2011-06-09 63 views
0

我使用的是後續的查詢,試圖用約10萬行複製條目具有大量數據的MySQL?

SELECT * 
FROM 
    db.tablename x 
JOIN db.tablename z 
    ON x.columnA = z.columnA 
WHERE 
    x.columnB > z.columnB 

的問題是,該表沒有因爲值複製數據的主鍵從表中識別數據這是主鍵。上述查詢速度非常慢,我無法弄清楚如何提高效率。

添加LIMIT 100仍似乎沒有幫助?

任何想法?

回答

2

要找到你能重複值:

select columnA 
from  table 
group by columnA 
having count(*) > 1 

取決於你那麼想做的事,你可以把這個臨時表。

但是,你有一個身份概念(即使不是100%正確的所有時間)並且沒有數據索引似乎很奇怪 - 你是否會經常使用這個字段進行查找?也許你可以在columnA上創建一個非唯一索引,至少當你運行你的查詢時

+1

是的,我認爲我需要在一個獨特的列上創建一個索引 - 問題是我被拋棄了所有這些數據,找出它:) – Tom 2011-06-09 14:09:51

+2

我可能創建ALTER TABLE db.name ADD INDEX index.name(column);然後用這個?假設這會加速這種情況? – Tom 2011-06-09 14:14:37

+0

@Tom:是的,添加這樣的索引將大大提高上述查詢的性能。 – 2011-06-09 15:32:19