它工作得很好了10000條記錄,但對於230萬個記錄它不工作,我怎麼也得處理這種類型的查詢,以提高性能請幫助我更新鮮到這個MySQL我需要提高查詢的
select
r1.countrycode,
r1.code,
r1.rate,
f.cdr_id,
f.cld,
f.direction,
from
rates1 r1,
calls f
where(r1.code,f.cld) in
(select
max(r1.code),
f.cld
from rates1 r1, calls f
where (f.cld regexp concat('^',r1.code,'[0-9]+$'))
group by f.cld
性能
);
Sub query returns the Unique values for code and cld and main query use the code and cld in where
condition and result the all the values
calls table data
cdr_id cld direction duration
1 1985484555 incoming 59
2 8475858585 outgoing 456
3 1895858888 outgoing 555
4 1548458455 incomimg 895
5 548585665 incoming 585
6 1985484555 outgoing 585
rates1 table data
countryocde code rate
040 19854 0.35
080 198 0.356
578 847 0.25
458 1548 0.50
555 1548 0.75
喜的朋友,我寫這篇文章的查詢,以挑選準則,爲2代表其做工精細,我少的記錄數的唯一值CLD colums,它不excuting了超過100萬記錄其執行長期以來給出任何結果,請幫助提前致謝。
包含'explain select ....'的結果 – 2014-11-21 12:23:56
子查詢返回代碼和cld的唯一值,主要查詢使用代碼和cld在where條件和結果的所有值 – chiru 2014-11-21 12:32:10
首先,我'使用'f.cld LIKE concat(r1.code,'%')'而不是'f.cld regexp concat('^',r1.code,'[0-9] + $')'作爲正則表達式在查詢中可能有害。 我想給你一個真正的答案你的問題,但有一些問題的理解ist。 – 2014-11-21 12:47:38