假设我有一个不是很“好”的SQL查询。
SQL查询有很多带有长条件的内连接,最后是一个简单的"where“语句。
现在假设我创建了一个与该SQL查询相对应的视图,但最后一个"where“语句除外。因此,我使用视图并简单地添加了"where“语句,而不是进行长查询。
我的问题是:哪一个性能最好?
我不确定"View“选项是否对应于两条sql语句,而不是第一个选项的一条sql语句。或者在执行查询之前,"View“查询被”粘贴“在更简单的查询中,并且是”相同的“。
发布于 2012-06-16 01:17:02
没什么区别。视图单独使用与查询相同的查询。
为了不同,它需要将其存储在视图中,而不是表视图中,它们只是使查询从外部看起来很容易。
发布于 2012-06-16 01:11:35
假设您正在使用的DBMS具有基于成本的查询优化器,那么当查询的一部分被转换为视图时,您可能不会获得更好的性能。您可以通过比较两个版本的查询的估计成本,使用数据库的查询解释工具来确认这一点。
我建议使用query explain实用程序来确定查询在哪里变得非常昂贵,因为查询痛点的位置通常是意想不到的。看起来所有这些连接都在减慢速度,但它们可能正在利用索引来最小化连接行所需的I/O和CPU周期。很多时候,查询会因为WHERE或ON子句中引用了未索引的列而停滞不前。
https://stackoverflow.com/questions/11059952
复制相似问题