仓酷云
标题:
查询数据库中一切表的数据数目的办法
[打印本页]
作者:
透明
时间:
2015-1-16 14:07
标题:
查询数据库中一切表的数据数目的办法
因此我们的方案中要构造这种逆操作。Event_type增加一种FLASHBACK_EVENT。这类操作形式与Query_Event相同,都是简单的SQL语句,只是包含了将数据恢复的操作。要查询一个表的数据数目,信任人人很快就想到了selectcount(1)fromtable1,但假如我们要查询数据库中一切表的的数据数目要怎样查呢?办法对照多,上面先容两种自己经常使用的办法:
一,使用
sp_spaceused
存储历程,sp_spaceused一次只能查询一个表的数据情形,以是利用sp_spaceused还得分离游标,不是很好的办理办法,人人能够参考第二种办法:
使用sp_spaceused的办法以下:
setnocounton
createtable#t1
(
namevarchar(200),
rowsint,
reservedvarchar(50),
datavarchar(50),
index_sizevarchar(50),
unusedvarchar(50)
)
declare@tablenamevarchar(200)
declare@sqlvarchar(2000)
declarem_cursorcursorlocalforselectobject_name(object_id)fromsys.objectswheretype=U
openm_cursor
fetchnextfromm_cursorinto@tablename
while@@fetch_status=0
begin
set@sql=insertinto#t1execsp_spaceused+@tablename
exec(@sql)
fetchnextfromm_cursorinto@tablename
end
closem_cursor
deallocatem_cursor
selectname,rowsfrom#t1
droptable#t1
复杂先容一下存储历程sp_spaceused感化:显现行数、保存的磁盘空间和以后数据库中的表、索引视图或SQLServer2005ServiceBroker行列所利用的磁盘空间,或显现由全部数据库保存和利用的磁盘空间。
假如我们如许实行:sp_spaceused表名
它会前往六列了局,截图以下:
登录/注册后可看大图
20130718211405.jpg
(8.21 KB, 下载次数: 10)
下载附件
保存到相册
查询数据库中一切表的数据数目的办法
2015-1-16 14:07 上传
name
:表名
rows
:该表的数据行数
reserved
:由数据库中工具分派的空间总量
data
:数据利用的空间总量
index_size
:索引利用的空间总量
unused
:保存但还没有利用的空间总量
个中rows就是我们要的了局列。
二,使用
sys.dm_db_partition_stats
,Sql命令以下:
selectb.name,a.row_countfromsys.dm_db_partition_statsa,
sys.objectsb
wherea.object_id=b.object_id
anda.index_id<=1
andb.type=U
sys.dm_db_partition_stats它前往以后数据库中每一个分区的页和行计数信息,在下面的sql中,三个关头列的意义以下:
object_id
:表大概索引视图的ID,以是能够用它与sys.objects表的object_id相婚配。
row_count
:该表或索引视图中数据的数目,就是我们要查询的了局。
index_id
:该表或索引视图的索引ID。假如该表没有索引,那末会在sys.dm_db_partition_stats中存在一行index_id=0的纪录,假如有一个会萃索引(并且一个表中也只能有一个会萃索引),那末在sys.dm_db_partition_stats中存在一行index_id=1的纪录,而对应的index_id=0的纪录没有了。假如这个表在sys.dm_db_partition_stats中存在多行index_id>1的纪录,则申明这个表存在多个非会萃索引,我们这里判别index_id<=1,是假定每一个表都有主键,且主键为会萃索引。共同sys.objects表的type=U,就能够查出每一个用户表的数据数目了。
sys.dm_db_partition_stats别的行的信息,人人能够查询msdn匡助文档。php本地模拟的prepare底层就是mysql_real_escape_string,所以必须得用mysql_set_character_set去设置mysql->charset,否则就存在字符集问题。
作者:
再现理想
时间:
2015-1-16 22:20
标题:
查询数据库中一切表的数据数目的办法
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的工具
作者:
分手快乐
时间:
2015-1-19 09:05
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
作者:
飘灵儿
时间:
2015-1-28 05:59
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
作者:
愤怒的大鸟
时间:
2015-2-5 18:45
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
作者:
简单生活
时间:
2015-2-13 06:24
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
作者:
admin
时间:
2015-3-3 17:25
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
作者:
小女巫
时间:
2015-3-11 12:35
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
作者:
变相怪杰
时间:
2015-3-18 17:56
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
作者:
山那边是海
时间:
2015-3-26 13:47
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2