题目:
PRODUCT表(id,name,price,count)
select * from PRODUCT where price=100
目前已经在price字段上加上了索引
1.不过以上查询速度还是很慢,请试说出慢的原因
2.请问如何优化才能加快速度

解决方案 »

  1.   

    1、数据量大 加上limit 一定数量的限制
    2、字段可以写出只要需要的字段 seletc id, name 等
    3、主键和price一起做一个联合索引剩下的楼下补充
      

  2.   

    select * from PRODUCT where price=100就这些?加了索引还很慢的话就没道理了。索引就是非遍历查询,直接定位到price为100的地方!数据量大的话,查询上肯定要比不加要快很多!难道你的数据库里有很多个price为100的数据?
      

  3.   

    这个要看需求了,不过看样子这个表中的几个字段都是需要经常用作where条件的,所以最好建立复合索引
      

  4.   


    yes,有可能,比如price为100的数据占了整个表数据量的8,90%,那mysql会认为不查索引树反而效率高
      

  5.   

    也许price字段根本就不适合加索引,并不是所有字段都能加索引,有些加了反而更慢!
      

  6.   

    price中重复数据太多导致查询效率下降的可能 最大。
      

  7.   

    慢的原因基本上为数据量太大
    优化方法就是将表的记录减少,根据price的情况,大概看看价格的区间,根据价格区间分表,这样在插入数据的时候判断price;但是大大提高了查询的速度,只要判断price,然后确定从哪个表中去查询数据就可以了