我有两个表:A - 301列(第一个名为a1 int(11)主键,第二个到第301个 - 双(15,11))和B - 33列(第一个 - b1 int(11)唯一键,第二个One - b2 varchar(100)主键,...,33rd - b33 int(11)MUL).
A和B都有约13,500,000条记录.
我的mysql查询:对于pos的每个值,以集合(1,1000,2000,...,13500000)中的pos为1000的倍数:
在a1 = b1上从A连接B中选择A.*,b2,b5,b7,b8,b10,b13,b33,其中b33> = pos,b33 <pos + 1000;
对于b33 <= 600,000的值,查询需要1-5秒.之后,查询开始耗时20-30秒.当b33> = 8,000,000时,查询开始花费60-70秒.我无法理解为什么减速正在发生.b33被索引,并且连接发生在一个表中定义为primary而另一个表中唯一的键上.这有解决方法吗?这实际上阻碍了代码的速度,如果没有别的办法,我将不得不将表A和B分成几个较小的表.我真的希望我不必那样做!请帮忙!
编辑:这是EXPLAIN的o/p -
************* 1.行*************
id:1
select_type:SIMPLE
表:B
类型:范围
possible_keys:b1,b33
键:b33
key_len :4
ref:NULL
行:981
额外:使用where
************* 2. row ******* …