SELECT `B_id`
FROM `zhh_bizinfo`
WHERE `B_buytype` = 1 limit 0,30;10 rows 用时39.88秒SELECT `B_id`
FROM `zhh_bizinfo`
WHERE `B_buytype` = 2  limit 0,30;30 rows 用时0.03秒表zhh_bizinfo共有100万条记录,其中B_buytype=1的只有10条,其它的B_buytype=2。两个查询速度怎么相关这么大呢?B_buytype类型为enum型。如何解决这个问题呢?

解决方案 »

  1.   

    B_buytype只有可能有2个值中的其中一个,1和2两都是排斥的!如果创建了索引。第一条SQL确实快了(0.02秒),但第二条SQL就慢了,变成39秒。
    在B_buytype建索引无用!
      

  2.   

    这个时间是sql查询用的时间,意思说你查了那摸多数据消耗了那么多时间,无论如何要查1万-10条数据呀!
      

  3.   

    分别解析一下:
    mysql>explain SELECT `B_id`
    FROM `zhh_bizinfo`
    WHERE `B_buytype` = 1 limit 0,30;
    mysql>SELECT `B_id`
    FROM `zhh_bizinfo`
    WHERE `B_buytype` = 2 limit 0,30;
    看看它们扫描的行数就知道原因了
      

  4.   

    问题我自己解决了。除了hy2003fly() 说明有一点点道理外,其他的好像都没有什么建议性的意义啊。