因胸联盟 发表于 2015-1-16 22:22:51

MSSQL编程:怎样在SQLSERVER中疾速有前提删除海量数...

使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性server|sqlserver|数据|前提1.SQLSERVER数据库改bit范例为notBoolean(即,true改成false;false改成true)
例:update表setbit字段=bit字段-1
比来有个伴侣问我,他说他在SQLSERVER删除几百万到几万万数据是显的很慢,帮他剖析了一下,提了一些以下定见,也许对良多人有效,再者也好长没写过BLOG了,一同切磋一下
假如你的硬盘空间小,而且不想设置数据库的日记为最小(由于但愿其他一般的日记但愿仍旧纪录),并且对速率请求对照高,并扫除一切的数据倡议你用turncatetable1,由于truncate是DDL操纵,不发生rollback,不写日记速率快一些,然后假如有自增的话,恢复到1入手下手,而delete会发生rollback,假如删除年夜数据量的表速率会很慢,同时会占用良多的rollbacksegments,同时还要纪录下G级其余日记;固然假如有前提删除好比wheretime<2006-3-10怎样办,能不克不及不纪录日记用delete,回覆是不可的,SQLServer引擎在计划上就会对Delete操纵举行日记纪录。至今没有举措强迫制订某一些语句不纪录到日记中,假如在实行DeleteTable1whereTime<2006-3-10因为触及的纪录对照多,以是日记纪录也响应很年夜(3-4G),假如可行,我倡议用以下体例:
选出您所必要保存的纪录到新的表。假如您利用FullRecoveryMode
依据SelectINTO的纪录数,日记大概会对照年夜
Select*intoTable2FromTable1WhereTime>=2006-03-10
然后间接TruncateTable1。不管何种恢复形式都不会举行日记纪录
TruncatetableTable1
最初对Table2举行更名为Table1
ECsp_renameTable2,Table1修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。

飘飘悠悠 发表于 2015-1-19 09:51:55

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

变相怪杰 发表于 2015-1-25 23:29:32

语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!

爱飞 发表于 2015-2-4 13:22:08

如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。

冷月葬花魂 发表于 2015-2-9 23:34:58

再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。

山那边是海 发表于 2015-2-28 08:44:25

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

兰色精灵 发表于 2015-3-9 21:39:55

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

金色的骷髅 发表于 2015-3-17 02:08:05

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

第二个灵魂 发表于 2015-3-23 16:12:46

XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
页: [1]
查看完整版本: MSSQL编程:怎样在SQLSERVER中疾速有前提删除海量数...