[英]How can I modify my SQL to speed it up?
The old sql is like this 旧的sql是这样的
SELECT COUNT(*) AS tp_count
FROM sdb_b2c_orders
WHERE pay_status='1'
and createtime>1413533130
and area_code in (1030,1031,1032,1033)
and member_id in (
select member_id
from sdb_invite_invite
where in_member_id=14273
or in_member_id=13742
or in_member_id=14299
)
LIMIT 1;
It is result is 22
结果是
22
But it is slow and I want to modify it to make it faster. 但是它很慢,我想对其进行修改以使其更快。 The new sql is like this:
新的sql是这样的:
SELECT COUNT(*) AS tp_count
FROM sdb_b2c_orders AS bo
INNER JOIN sdb_invite_invite AS ii ON bo.member_id=ii.in_member_id
WHERE bo.pay_status='1'
AND bo.area_code IN (1030,1031,1032,1033)
AND bo.createtime>1413533130
AND ii.in_member_id IN (14273,13742,14299)
But it is result is 131
...why? 但是结果是
131
...为什么?
I would suggest you use exists
instead: 我建议您改用
exists
:
SELECT COUNT(*) AS tp_count
FROM sdb_b2c_orders o
WHERE pay_status = '1' and createtime > 1413533130 and area_code in (1030,1031,1032,1033) and
exists (select 1
from sdb_invite_invite i
where i.member_id = o.member_id and i.in_member_id in (14273, 13742, 14299)
);
You can also improve performance with indexes. 您还可以使用索引提高性能。 I would recommend
sdb_b2c_orders(pay_status, createtime, area_code, member_id)
and sdb_invite_invite(member_id, in_member_id)
. 我建议使用
sdb_b2c_orders(pay_status, createtime, area_code, member_id)
和sdb_invite_invite(member_id, in_member_id)
。
SELECT COUNT(*) AS tp_count FROM sdb_b2c_orders AS bo INNER JOIN sdb_invite_invite AS ii ON bo.member_id=ii.in_member_id WHERE bo.pay_status='1' AND bo.area_code IN (1030,1031,1032,1033) AND bo.createtime>1413533130 AND ii.in_member_id IN (14273,13742,14299)
从sdb_b2c_orders中选择COUNT(*)AS tp_count作为bo bo内联接sdb_invite_invite AS ii在bo.member_id = ii.in_member_id的地方bo.pay_status ='1'和bo.area_code IN(1030,1031,1032,1033)和bo.createtime > 1413533130 AND ii.in_member_id IN(14273,13742,14299)
fixed bo.memeber_id=ii.in_member_id
to bo.member_id=ii.member_id
固定
bo.memeber_id=ii.in_member_id
为bo.member_id=ii.member_id
Then it works! 然后就可以了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.