柔情似水 发表于 2015-1-16 14:09:00

怎样使用SQL查询视图所援用的一切表

InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定我们在反省视图功能时,一般会检察视图中究竟援用了那些表。固然,我们能够使用sp_helptext检察视图的界说。但在这章,我们次要解说怎样使用SQL疾速地检察指定视图所援用的一切表。

在此之前,我们先懂得一下目次视图sys.sql_dependencies,该视图的注释以下:
"在界说某些其他援用(相干)工具的SQL表达式或语句中举行援用时,被援用(自力)实体的每一个相干性在表中均对应一行。任何工具或列的界说属性包括SQL表达式时,都能够有相干性"
下面的注释大概对照拗口,复杂的了解就是假如在某个SQL界说(如:视图,函数,触发器等)中假如援用了某个表,那末就会在sys.sql_dependencies中存在一条对应的纪录。并且,假如援用了这个表的多个列,那末就会有多笔记录。

sys.sql_dependencies前往的主要的列:
object_id--界说的工具ID(在本章就是指我们要查询的视图名)
referenced_major_id--被援用的实体的ID(在本章就是被援用表的称号)
referenced_minor_id--被援用的实体的列的ID(在本章就是被援用表的列的ID)

人人能够经由过程select*fromsys.sql_dependencies检察了局就可以分明了。

懂得了这些,前往视图所援用一切表的SQL语句就变的很复杂了,示比方下:
selectdistinctobject_name(referenced_major_id)asreferencednamefromsys.sql_dependencies


假如还必要查询出一切被援用的列,可使用以下SQL语句:
selectobject_name(A.object_id)asobject_name,B.NameasColumnName
fromsys.sql_dependenciesA
leftjoinsys.columnsBonA.referenced_minor_id=B.column_idandA.referenced_major_id=B.object_id


延长:由于在视图中除援用表以外,另有大概援用函数等,以是我们还应当查询出所援用实体的范例,示例SQL以下:
declare@viewnamevarchar(50)
set@viewname=v_Salary--假定的视图名
select@viewnameasname,
nameasreferencedname,
type--所援用实体的范例
fromsys.objects
wherenamein(
selectdistinctobject_name(referenced_major_id)asreferencedname
fromsys.sql_dependencies
whereobject_id=object_id(@viewname))


以上就是本节一切内容了,假如有不合错误大概更好的办法,请人人在批评中会商,配合参进,才会更出色!导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。

乐观 发表于 2015-1-18 12:11:40

总感觉自己还是不会SQL

简单生活 发表于 2015-1-26 16:27:58

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

灵魂腐蚀 发表于 2015-2-4 20:42:23

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

第二个灵魂 发表于 2015-2-10 09:30:23

不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关

不帅 发表于 2015-3-1 09:37:56

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

变相怪杰 发表于 2015-3-10 16:41:11

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

透明 发表于 2015-3-17 09:10:23

也可谈一下你是怎么优化存储过程的?

飘灵儿 发表于 2015-3-24 05:24:06

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
页: [1]
查看完整版本: 怎样使用SQL查询视图所援用的一切表