SELECT * FROM products AS p  LEFT JOIN stock AS eps ON eps.item_no = p.itemno  GROUP BY  p.itemno 
products  2,970 条记录
stock   1,766 条记录item_no 与 itemno 都有索引。执行上面sql 花费18.8822 秒。
EXPLAIN发现索引都没用上。id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra 
--------------------------------------------------------------------------------------------
1 SIMPLE p ALL NULL NULL NULL NULL 2970 Using temporary; Using filesort
1 SIMPLE eps ALL NULL NULL NULL NULL 1766  求解。。18.8822无法授受。谢谢高鸟们。

解决方案 »

  1.   

    show create table xxx;
    show variables like 'tmp';
      

  2.   

    只需要products表的itemno列有索引就足够了,楼主可以查看一下建表语句,看看itemno列是否有单列索引或者以itemno为最左前缀的多列索引。
    如果确实有索引,可能别的线程对这些表disable keys了(当然,前提是你用了MyISAM存储引擎)。
    如果这些可能性都被排除了,那就太诡异了~
      

  3.   

    创建索引, products (itemno  ) 和stock (item_no)每表各创建一个索引。
      

  4.   

    1对多。因为我要一个sum统计数量。上面sql不写上。。
      

  5.   

     products (itemno ) 和stock (item_no)每表各创建一个索引
    这两个索引是有的。现在问题解决了。是字符集问题。
    现在查询0.03秒Orz。