我加入了两个表,表a中有数百条记录,表b中有数十万条记录。我加入了内部和左边的连接,但它是两个慢。我的查询是:
SELECT
ch.id,
ch.client_client_id,
ch.duration,
ch.start,
ch.isread,
ch.prefix,
ucr.ucr_add_factor,
ucr.ucr_period,
ucr.ucr_cr_prefix
FROM
call_history AS ch
LEFT JOIN tbl_usr_call_rates AS ucr
ON (
ch.prefix=ucr.ucr_cr_prefix
AND ch.client_client_id=ucr.ucr_callshop_id
)
WHERE
ch.isread='0'
如何提高性能
感谢您提前......
答案 0 :(得分:2)
检查使用的索引。您可以看到通过
使用的内容EXPLAIN SELECT
ch.id, ch.client_client_id, ch.duration, ch.start, ch.isread, ch.prefix,
ucr.ucr_add_factor, ucr.ucr_period, ucr.ucr_cr_prefix
FROM call_history AS ch
LEFT JOIN tbl_usr_call_rates AS ucr
ON (ch.prefix=ucr.ucr_cr_prefix AND ch.client_client_id=ucr.ucr_callshop_id)
WHERE ch.isread='0'
答案 1 :(得分:1)
检查索引 检查连接是否需要多个字段,否则您将拥有笛卡尔积
还有很多其他的,但这些是主要的。
吉姆
答案 2 :(得分:0)
我认为你在这些领域有索引吗?
call_history.prefix
tbl_usr_call_rates.ucr_cr_prefix
call_history.client_client_id
tbl_usr_call_rates.ucr_callshop_id
call_history.isread
答案 3 :(得分:0)
您可以尝试在加入的列上添加索引。
答案 4 :(得分:0)
在加入之前首先通过WHERE子句进行过滤,这样就可以加入已经过滤的结果,而不是加入所有结果,然后过滤大结果。