2012-03-11 42 views
0

鉴于一个丑陋的,可能长,效率低,冗余和复杂的查询,有没有一种工具可以简化目标数据库?如果不是,由于数据库无论如何优化查询,是否有可能看到数据库将使用的优化查询?我对实际查询计划不感兴趣,而是对优化和/或简化查询感兴趣。那可能吗?我对任何这些数据库的答案感兴趣:MySQL,SQL Server,Postgres,SQLite。可能查看数据库的简化或优化SQL查询吗?

+0

按照设计,SQL表示查询的逻辑,而不管任何查询计划可能用于执行它。因此,尽管存在简化查询这样的事情,但对于第一次近似,并不存在像“优化”SQL查询那样的事情。当然,在实践中,大多数数据库允许你使用像USE INDEX这样的强制子句,但这通常是最好的避免,因为它可以防止数据库适应不断变化的数据配置文件。 – GSnyder 2012-03-11 01:58:20

回答

1

因为数据库反正优化查询...

PostgreSQL的优化查询计划,但几乎没有转化为相应的SQL查询。这不是重新编写的SQL代码本身。因此,,除非您对查询计划程序的内部工作有深入的了解,否则无法从优化的查询计划派生优化的SQL查询。

通过查看EXPLAIN ANALYZE的输出,您可以了解是使用索引还是查询计划程序选择表扫描以及其他有用的详细信息。

+1

相同的答案适用于MySQL。您可以看到带有EXPLAIN EXTENDED的查询计划,但它是以表格形式,需要一些知识来解释而不是以查询的形式。 – GSnyder 2012-03-11 01:51:44