此來源雖好,但速度太慢。 功能: 選擇所有行,如果SC和%% 5和2013年7月11日<日期< 2013年7月18日 和 一些舊線代表線 方法: 尋找X計數行。 逐一看是否有一致性28天SQL多選SELECT太慢(7分鐘)
select efi_name, efi_id, count(*) as dupes, id, mlap_date
from address m
where
mlap_date > "2013.07.11"
and mlap_date < "2013.07.18"
and mlap_type = "SC"
and calendar_id not like "%%5"
and concat(efi_id,irsz,ucase(city), ucase(address)) in (
select concat(k.efi_id,k.irsz,ucase(k.city), ucase(k.address)) as dupe
from address k
where k.mlap_date > adddate(m.`mlap_date`,-28)
and k.mlap_date < m.mlap_date
and k.mlap_type = "SC"
and k.calendar_id not like "%%5"
and k.status = 'Befejezett'
group by concat(k.efi_id,k.irsz,ucase(k.city), ucase(k.address))
having (count(*) > 1)
)
group by concat(efi_id,irsz,ucase(city), ucase(address))
感謝您的幫助!
用一個一個的匹配來替換CONCAT,否則它會比較字符串並且太慢。 – sashkello
正如davek所說,我認爲將'WHERE IN'子句改爲'INNER JOIN'可以解決這個問題。 – rAy
爲什麼你有一個雙'%'通配符?你的意思是使用'__'代替嗎? – 2013-07-20 10:12:43