SELECT * FROM `sale_orders` T 
WHERE (`number`='' or `number`=81) 
AND 1=(select count(*) from `sale_orders` 
where (`number`='' or `number`=81) 
AND `recipient_name`=T.`recipient_name`  
AND `ship_address_1`=T.`ship_address_1`) 
AND 
`package_area`='SZ' 
GROUP BY `recipient_name` , `ship_address_1`以上语句当查询的记录到1700条的时候,执行需要35秒左右,有没有什么方法能够让它快点?这还只是一个语句
我还循环15次

解决方案 »

  1.   

    尝试number和package_area上分别加索引
      

  2.   

    create index xx1 on sale_orders (recipient_name,ship_address_1,number)
    create index xx2 on sale_orders (number,recipient_name,ship_address_1)
      

  3.   

    提示#1170 - BLOB/TEXT column 'recipient_name' used in key specification without a key lengthrecipient_name,ship_address_1是VARCHAR类型
    number是int
      

  4.   

    recipient_name 不是VARCHAR的啊。是BLOB的。或者TEXT的,这种字段上的速度非常慢。