改进SELECT SQL查询

时间:2011-07-04 15:18:04

标签: mysql query-optimization

我的数据方案非常简单,我们说它是关于农场的

  • tableA是主要的,有一个 重要字段“is_active”假设 该农场是值得信赖的(种)
  • tableB是一个数据存储 关于农场的序列化数组 统计

我想检索有关活动服务器场的所有数据,所以我只是做了类似的事情:

SELECT * FROM tableA LEFT JOIN tableB ON id_tableA=id_tableB WHERE is_active=1 ORDER BY id_tableA DESC;

现在查询需要15秒才能直接从sql shell执行,例如我想从tableB中检索所有数据,如:

 SELECT * FROM tableB ORDER BY id_tableB DESC;

只需不到1秒(约1200行)...

如何改进原始查询?

THX

2 个答案:

答案 0 :(得分:3)

在键上创建索引连接两个表..

检查此链接,如何在mysql中创建索引: http://dev.mysql.com/doc/refman/5.0/en/create-index.html

答案 1 :(得分:2)

您必须创建一个索引。

您可以创建以下索引:

  

的MySQL>在tableA上创建索引ix_a_active_id(id_tableA,is_active);

     

的MySQL>在tableB上创建索引ix_b_id(id_tableB);

这首先在id +是活动变量上创建一个索引。 第二个为tableB的id创建一个索引。