mysql-视图性能提升是否仍与现代RDBMS相关
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-视图性能提升是否仍与现代RDBMS相关,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1705字,纯文字阅读大概需要3分钟。
内容图文
![mysql-视图性能提升是否仍与现代RDBMS相关](/upload/InfoBanner/zyjiaocheng/882/951c2dec3ee54189aa5a7d0c37e567dc.jpg)
毫无疑问,写SELECT * FROM viewCostumerAddress比SELECT c.id,c.name,a.id,a.fullAddress FROM客户c在JOIN地址a.id_costumer = c.id上更简单直观, c.优先,但是当一群人告诉您“视图的性能要好得多”并且您的测试没有显示出您所获得的好处时?
我执行的所有测试都使用相同的SQL Server2014.数据集包含约2kk客户端和2.5kk地址.任何时候,服务器内存消耗都不会超过60%.在执行冷查询测试之后,始终会执行完整的服务重新启动,以“强制清除”所有预编译查询和所有缓存的信息.仅在每个查询/视图被命中200次之后,才记录热查询的结果,并过滤尽可能多的不同值.所有测试均在专用而非虚拟服务器(裸机)上进行了1000次.
但是,对于热查询,最终结果的变化小于1%(0.971%),对于冷查询,最终结果的变化几乎为0(0.0024%).
面对这些结果,我想知道在现代RDBMS环境和“对象关系映射器”中,性能的旧主张是否仍然是从视图而不是直接从表中查询数据的有效理由?
PS:请在回答中尽量做到科学,提供测试方法(如果有)和/或科学论文,或者在举报您目击的事件时要具体而透彻.
解决方法:
如果您有一个非索引视图的普通视图,则不会提高性能.这是因为,当您从视图中选择时,SQL-Server会像不使用视图一样运行T-SQL-Statement.
这些是我对观点的一些看法:
1.视图是安全层
我个人不希望任何人直接访问我的基表.
在视图中,我可以根据调用者的权限过滤掉行.
直到SQL Server 2014,您都无法使用表执行此操作.
2.视图返回特定的列集
如果必须更改基础表的架构,则可以以某种方式更改视图,使其返回与以前相同的列.如果您不使用视图,并且用户自己从基表中进行选择,则查询可能会失败.
3.视图节省了开发时间
您不必一遍又一遍地编写相同的T-SQL语句.而且,如果T-SQL语句中有错误怎么办?只需将其固定在一个位置即可.您可能不必更改应用程序或许多功能以及存储过程.
4.使用索引视图加速SELECT
当您发现视图中的INNER JOIN太昂贵并且没有更多其他选项(例如有用的索引或架构更改)时,可以使用索引视图来加快SELECT的速度.但是您可能会在INSERT,UPDATE和DELETE上降低性能,因为视图的索引也必须更新.
内容总结
以上是互联网集市为您收集整理的mysql-视图性能提升是否仍与现代RDBMS相关全部内容,希望文章能够帮你解决mysql-视图性能提升是否仍与现代RDBMS相关所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。