如何优化mysql查询。

时间:2013-12-06 12:47:17

标签: mysql database performance join union

我有两个表具有相同的结构。这两个表都包含记录的crores。对于certian记录生成我必须采取两个表数据。有时会在查询中的where条件,有时不会有任何地方条件因为where条件是基于用户输入而建立的。所以如果没有用户给出的输入那么就没有where子句,因此将获取整个记录。为此我将获取两个表记录然后加入他们。

示例tbl strucuture

TABLE_1

  

column_1 | column_2 | column_3 | column_4 | column_5

TABLE_2

  

column_1 | column_2 | column_3 | column_4 | column_5

所以我使用以下查询来获取表格中的结果

select t1.* from table_1 as t1 inner join table_3 as t3 on t1.column = t3.column where condition
    union
select t2.* from table_2 as t2 inner join table_3 as t3 on t2.column = t3.column where condition
order by column

请注意where where条件可能适用也可能不适用。其中table_3包含table_1和table_2中常见的记录详细信息。我可以选择使用某种东西而不是union来改善性能。如同加入。?< / p>

所以我的问题是,当我运行此查询而没有任何where条件时,它不执行,因为表包含crores记录。我也需要来自两个表的数据。非常感谢任何优化技术。

提前致谢..

1 个答案:

答案 0 :(得分:2)

您可以使用全部或两个或其中一个选项

1)尝试对列进行索引 2)为WHERE子句设置一些默认条件 3)使用限制。

并使用“EXPLAIN”检查您的查询,但您可以优化查询 http://dev.mysql.com/doc/refman/5.0/en/using-explain.html