-
真正高效的SQLSERVER分页查询(多种方案)
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID、YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,Sqlserver版本:2008R2第一种方案、最简单、普通的方法:复制代码代码如下:SELECTTOP30*FROMARTICLEWHEREIDNOTIN(SELECTTOP45000IDFROMARTICLEORDERBYYEARDESC,IDDESC)ORDERBYYEARDESC,IDDESC平均查询100次所需时间:45s第二种方案:复制代码代码如下:SELECT*FROM( SELECTTOP30*FROM(SELECTTOP45030*FROMARTICLEORDERBYYEARDESC,IDDESC)fORDERBYf.YEARASC,f.IDDESC)sORDERBYs.YEARDESC,s.IDDESC平均查询100次所需时间:138S第三种方案:复制代码代码如下:SE...
数据库操作教程 2022-09-23 17:13:43 -
数据库复制性能测试推送模式性能测试
数据库复制就是由两台服务器,主服务器和备份服务器,主服务器修改后,备份服务器自动修改,在以前的文章中已经做了详细的说明,这里就不在重复,具体请参见https://www.jb51.net/article/30661.htm使用了数据库复制的人,首先担心的就是主服务器和备份服务器的性能消耗问题,本人也是对此十分担忧,查了半天,基本上没发现类似的测试说明,就自己测试了一下,下面为测试的结果,仅供参考我采用的是数据库推送的复制模式,下面测试页是基于此模式因为数据库复制主要是I/O操作,所以在此测试主要测试服务器的硬盘读写操作,此次测试主要监控的对象为avg.diskqueuelength(下文简称为dql)简单可以理解成磁盘数据吞吐量的外在体现。通俗的将就是曲线上随便取两个不同的点,高的一点说明正在的进行读写操作的量比较大,反之,比较小...
数据库操作教程 2022-09-23 17:13:03 -
sqlserverbcp(数据导入导出工具)一般用法与命令详解
bcp是SQLServer中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据。bcp可以将数据库的表或视图直接导出,也能通过SELECTFROM语句对表或视图进行过滤后导出...
数据库操作教程 2022-09-23 17:10:27 -
T-SQL问题解决集锦数据加解密全集
以下代码已经在SQLServer2008上的示例数据库测试通过问题一:如何为数据进行加密与解密,避免使用者窃取机密数据?对于一些敏感数据,如密码、卡号,一般不能使用正常数值来存储。否则会有安全隐患...
数据库操作教程 2022-09-23 17:10:23 -
SQL行号排序和分页(SQL查询中插入行号自定义分页的另类实现)
(一)行号显示和排序1.SQLServer的行号A.SQL2000使用identity(int,1,1)和临时表,可以显示行号SELECTidentity(int,1,1)ASROWNUM,[DataID]INTO#1FROMDATASorderbyDataID;SELECT*FROM#1B.SQL2005提供一个很好用的函数row_number(),可以直接用来显示行号,当然也可以使用SQL2000的identitySELECTrow_number()over(ORDERBYDataID)ASROWNUM,[DataID]FROMDATAS;这里如果添加排序功能,则先排序再添加行号2.ORACLE的行号显示使用ROWNUMSELECTROWNUM,[DataID]FROMDATASorderbyDataID注意:先加行号再排序,如果想排序好再加行号就要使用子查询3.取前n条数据A.SQL版selecttopn[DataID]fromDATASB.ORACLE版SELECT[DataID]FROMDATASwhereROWNUM<=n其中,n>=1ORACLE的ROWNUM...
数据库操作教程 2022-09-23 17:10:11 -
SQLServer数据库索引其索引的小技巧
一、什么是索引减少磁盘I/O和逻辑读次数的最佳方法之一就是使用【索引】索引允许SQLServer在表中查找数据而不需要扫描整个表。1.1、索引的好处:当表没有聚集索引时,成为【堆或堆表】【堆】是一堆未加工的数据,以行标识符作为指向存储位置的指针...
数据库操作教程 2022-09-23 17:10:11 -
sql语句查询数据库中的表名/列名/主键/自动增长值实例
sql语句查询数据库中的表名/列名/主键/自动增长值----查询数据库中用户创建的表----jsj01为数据库名selectnametablenamefromjsj01....
数据库操作教程 2022-09-23 17:10:00 -
SQLServer2005实现数据库同步备份过程-结果-分析
数据库复制:简单来说,数据库复制就是由两台服务器,主服务器和备份服务器,主服务器修改后,备份服务器自动修改。复制的模式有两种:推送模式和请求模式,推送模式是主服务器修改后,自动发给备份服务器,请求模式是,备份服务器自动去请求,个人开始也比较重视去测试两个模式的差别,但是测试发现,其实两个模式差别不是很大,在当今的服务器配置中,没必要考虑这么多,虽然会有一些差别,但是可在可以忽略的范围之内,建议直接选择推送模式,因为配置起来相对简单数据库发布类型有三种:快照发布,事务性发布,具有可更新订阅和事务性发布,合并发布一般都会采用事务性发布,具体好处,就不说了,网上一大堆的复制过程:第一:点开数据库--复制---本地发布---新建发布 下面只提供需要注意的地方,其他的点击下一步即可上面已经说了,推荐事物一般只复制表即可,但是如果需要其他的,请自行考虑快照,如果每天需要快照一次,那么可以点击下面的按钮,如果只快照一次的话,就没必要了使用默认配置即可这样不出意外就完成了一个发布服务器的配置,那么现在配置订阅服务器可以在你自己机器上直接操作第一:点开数据库--复制---本地发布-...
数据库操作教程 2022-09-23 17:09:56 -
sqlserver还原数据库时提示数据库正在使用,无法进行操作的解决方法
这个问题的原因在于有用户连接了当前要做还原的数据库,这里的用户甚至包括当前要做还原的用户。解决办法就是关闭与要还原数据库的所有连接...
数据库操作教程 2022-09-23 17:09:51 -
sqlserver中重复数据值只取一条的sql语句
复制代码代码如下:--建立数据表createtableTestData(IDintidentity(1,1)primarykey...
数据库操作教程 2022-09-23 17:08:11 -
SQLServer误区30日谈第9天数据库文件收缩不会影响性能
误区#9:数据库文件收缩不会影响性能错误! 收缩数据库文件唯一不影响性能的情况是文件末尾有剩余空间的情况下,收缩文件指定了TruncateOnly选项。 收缩文件的过程非常影响性能,这个过程需要移动大量数据从而造成大量IO,这个过程会被记录到日志从而造成日志暴涨,相应的,还会占去大量的CPU资源...
数据库操作教程 2022-09-23 17:07:25 -
设置SQLServer数据库中某些表为只读的多种方法分享
一般情况下会有几种情况需要你把数据库设为只读:1.Insert,Update,Delete触发器2.Check约束和Delete触发器3.设置数据库为只读4.把表放到只读文件组中5.拒绝对象级别权限6.创建视图在开始之前,先创建一个数据库及表作为示例:复制代码代码如下:createdatabaseMyDBcreatetabletblEvents(idint,logEventvarchar(1000))insertintotblEventsvalues(1,'PasswordChanged'),(2,'UserDropped'),(3,'FinanceDataChanged')nsert/Update/Delete触发器:请注意这里使用的是INSTEADOFtrigger,因为如果你使用了AFTERtrigger,会在执行DELETE,UPDATE和INSERT语句时请求锁,会对写事务日志和回滚操作造成性能上的影响复制代码代码如下:CREATETRIGGERtrReadOnly_tblEventsONtblEventsINSTEADOFINSERT,UPDATE,DELETEASBEGI...
数据库操作教程 2022-09-23 17:07:16