日度归档:2018年8月7日

mssql sqlserver 多表联合查询效率提升方法分享


摘要:
下文通过举例的方式分享sql联合查询效率提升方法,如下所示:


下文通过建立的索引的方式对比sql语句的查询效率:如下所示:
—未建立索引前:
select count(*) from testA,testB where testA.keyId=testB.keyId and testA.info=’A’ —耗时9秒
未建立索引前,sql脚本会将所有数据进行笛卡尔集计算,然后将数据放入临时表中,做where过滤操作
—在表testA上建立索引,索引包含列keyId info ,再次运行一下脚本:
select count(*) from testA,testB where testA.keyId=testB.keyId and testA.info=’A’ —耗时0.09秒
我们可以看出,拥有索引后,sql查询效率得到了百倍的提升,可见索引对于sql检索数据至关重要。

索引建立规则:
1.尽量建唯一索引
2.在经常需要排序 分组 操作的字段上建立索引
3.索引尽量包含需返回列
4.删除不使用或很少使用的索引
5.在常检索的字段上添加索引

mssql sqlserver数据库触发器的查看方法分享


摘要:
由于使用了”服务器触发器”来限制IP登陆,下文讲述通过ssms管理器查看”数据库触发器”的方法


依次点击”数据库名称”–>”服务器对象”–>”触发器”–>可以查看数据库上所有的触发器,如下图所示:
mssql_sqlserver_服务器触发器查看方法

mssql_sqlserver_服务器触发器查看方法


删除”数据库触发器”的方法:
方法1:在”触发器”上点击右键”删除”
方法2:在数据库执行如下脚本

IF  EXISTS (SELECT * FROM master.sys.server_triggers WHERE parent_class_desc = 'SERVER' AND name = N'触发器名称')
DROP TRIGGER [触发器名称] ON ALL SERVER
GO

mssql sqlserver 限制指定IP访问服务器


摘要:
下文分享禁止指定IP访问sqlserver服务器的方法分享
实验环境:sqlserver 2008 R2


例:–禁止sa账户使用相应的非(10.15.162.155)的IP访问sqlserver服务器

CREATE  TRIGGER tr_stop_ip
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN

--使用testuser这个帐号的连接
IF ORIGINAL_LOGIN()= 'sa'
   AND
 (SELECT COUNT(*) FROM sys.dm_exec_sessions
            WHERE [host_name]<>'localhost' AND
                original_login_name = 'sa') > 0

--以下代码中的IP是被允许的
and
(select top 1 b.client_net_address from sys.dm_exec_sessions a inner join master.sys.dm_exec_connections b on
a.session_id=b.session_id and a.login_name='sa' 
order by login_time desc
)
not in('10.15.162.155')
     ROLLBACK;
END;


注意事项:当我们使用限制的ip访问sqlserver服务器时,会出现以下错误提示信息

mssql_sqlserver_禁止指定ip访问服务器

mssql_sqlserver_禁止指定ip访问服务器