日度归档:2019年5月14日

mssql sqlserver 快速获得表总记录数的方法分享


摘要:
下文讲述sqlserver中大数据量快速获取表总行数的方法分享,如下所示:
实验环境:sql server 2008 R2


一、从系统表中获取记录数

—-此方法非常方便应用于大数据量,因为直接获取系统表中的数据,所以无论数据量多少,查询耗时都不会发生变化
select rows as [行数] FROM sysindexes WHERE id = OBJECT_ID(‘数据表名称’) AND indid <2
二、使用count聚合函数从数据表中实时获取

此方法是效率最低效的方法,因为会扫描整张数据表
select count(1) from [数据表名称]


三、通过系统函数sp_spaceused中获取数据表所对应的行数信息,如下所示:

  DECLARE @t TABLE(
             [tbName] SYSNAME,
             [RowCount] NVARCHAR(200),c NVARCHAR(2000),
               d NVARCHAR(2000),e NVARCHAR(2000),
               f NVARCHAR(2000)
              ) 
    
        
             INSERT INTO @t EXEC sp_spaceused '数据表名称' 
     
             SELECT TOP 1 [RowCount]  as [行数] FROM @t    as t 

mssql sqlserver 获取存储过程参数信息的方法分享


摘要:
下文讲述使用sqlserver系统对象获取存储过程参数的方法分享,如下所示:
实验环境:sqlserver 2008 R2


由于需要编写一个存储过程通用的参数化生成器,需要获取存储过程中的参数信息,下文将利用系统对象获取存储过程中的参数信息,如下所示:

实现思路:
通过查询系统对象” INFORMATION_SCHEMA.PARAMETERS”,输入响应的架构名称和存储过程名称获取相应的参数信息。

    SELECT PARAMETER_NAME as [参数名称],
     DATA_TYPE as [参数类型],
     ISNULL(CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION) as [长度],
     NUMERIC_SCALE  as [精度],
     PARAMETER_MODE as [参数类型(输入/输出)] 
    FROM INFORMATION_SCHEMA.PARAMETERS
    WHERE SPECIFIC_SCHEMA = '架构名称' AND  SPECIFIC_NAME = '存储过程名称'

-----例:获取pr_maomao存储过程的参数信息
       SELECT PARAMETER_NAME as [参数名称],
              DATA_TYPE as [参数类型],
              ISNULL(CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION) as [长度],
              NUMERIC_SCALE  as [精度],
              PARAMETER_MODE as [参数类型(输入/输出)] 
    FROM INFORMATION_SCHEMA.PARAMETERS
   WHERE SPECIFIC_SCHEMA = 'dbo' AND  SPECIFIC_NAME = 'pr_maomao'

mssql sqlserver 根据表中两列(相加、相乘、相减)生成新列的方法分享


摘要:
下文分享sqlserver表中,新列采用其它两列生成的方法分享,如下所示:
实验环境:sqlserver 2008 R2


例:

     create table [maomao365]
(sort varchar(30) not null,qty int not null,qty2 int not null )
go

insert into [maomao365]
(sort,qty,qty2)values
('A',2,8),('B',3,6),('C',5,4),
('F',4,3),('G',5,7),('C',6,3) 
go

---新增里qtyAll 为qty和qty2相加
alter table [maomao365]
add qtyAll as qty+qty2 
go
---新增里qtyJian 为qty和qty2相减
alter table [maomao365]
add qtyJian as qty-qty2 
go

---新增里qtyCheng 为qty和qty2相乘
alter table [maomao365]
add qtyCheng as qty*qty2 
go


---新增里qtyChu 为qty和qty2相除
alter table [maomao365]
add qtyChu as qty/qty2 
go

select * from [maomao365]

go
truncate table [maomao365]
drop     table [maomao365]