数据库问题,一个sql数据库原来只有一张表,现在想分为多表。主要是数据库量太大。怎么效率才会高呢?

问题描述

关键问题是数据量太大,我想写个脚本按照表中某个字段分成十几张表,但是我试了下在转换10G的数据时就需要很长时间,更不要说50g的数据了。各位有什么好办法没有,指点下。脚本里面我是直接这样写的:select*intoEmailLogfromclientadwheredwTypeID1in(131329,132865,131331,132867)godeletefromclientadwheredwTypeID1in(131329,132865,131331,132867)goselect*intoNetSharefromclientadwheredwTypeID1in(196871,196872)godeleteformclientadwheredwTypeID1in(196871,196872)请大家指点下。

解决方案

解决方案二:

解决方案三:
那也没办法,用你的方法慢慢来。
解决方案四:
欢迎入群讨论:10987609
解决方案五:
SF,建议去SQL板块
解决方案六:
顶,等高手路过。
解决方案七:
INTO子句(Transact-SQL)发送反馈请参阅全部折叠全部展开语言筛选器:全部语言筛选器:多语言语言筛选器:VisualBasic语言筛选器:C#语言筛选器:C++语言筛选器:J#语言筛选器:JScriptVisualBasic(Declaration)C#C++J#JScript创建新表并将来自查询的结果行插入新表中。如果用户执行带INTO子句的SELECT语句,必须在目标数据库中具有CREATETABLE权限。SELECT...INTO不能与COMPUTE一起使用。Transact-SQL语法约定语法[INTOnew_table]参数new_table根据选择列表中的列和WHERE子句选择的行,指定要创建的新表名。new_table的格式通过对选择列表中的表达式进行取值来确定。new_table中的列按选择列表指定的顺序创建。new_table中的每列与选择列表中的相应表达式具有相同的名称、数据类型和值。当选择列表中包括计算列时,新表中的相应列不是计算列。新列中的值是在执行SELECT...INTO时计算出的。包括SELECT...INTO在内的某些大容量操作的日志记录量取决于对数据库有效的恢复模式。有关详细信息,请参阅恢复模式概述。在SQLServer2000之前的版本中,只有设置了selectinto/bulkcopy,才允许使用SELECTINTO创建永久表。不过,在SQLServer2000和更高版本中,selectinto/bulkcopy数据库选项不影响您是否可以使用SELECTINTO创建永久表。此外,在SQLServer2005中,使用selectinto/bulkcopy将导致恢复模式重置为大容量日志记录。如果恢复模式以前是简单恢复模式,将其更改为大容量日志记录会导致日志链中断。因此,应该立即提取数据库备份或差异备份。然后,立即切换回简单恢复模式或切换到完整恢复模式,将定期日志备份添加到您的备份计划。
解决方案八:
没注意看LZ的SQLdwTypeID1是主键吗?
解决方案九:
不要用in最好使用>=AND<=还有不要导入以后就删除,感觉是这里最废时间..导完后使用TRUNCATETABLE[{database_name.[schema_name].|schema_name.}]table_name[;]来清除数据表,非常快..
解决方案十:
是oracle数据库么?是的话恭喜你,oracle数据库本身带这种功能不用你费神了...
解决方案十一:
zhiang75:非常感谢你的提醒,不过我把delete语句删除掉之后,时间好像没有明显的提升。beolee:是sql数据库。
解决方案十二:
用sqlserver自带的dts会更好点
解决方案十三:
DTS吧,就是导入导出,如果硬盘足够大的话.
解决方案十四:
内存多大啊?感觉是内存不够用了...

时间: 2024-09-27 02:26:13

数据库问题,一个sql数据库原来只有一张表,现在想分为多表。主要是数据库量太大。怎么效率才会高呢?的相关文章

关于SQL数据库的一个小白问题

问题描述 关于SQL数据库的一个小白问题:我在J#的查询编辑器里搞了下面的查询SELECTID,姓名,性别,学号,密码,联系方式,身份证号,出生日期FROMstudentWHERE(学号='11')这样就把学号为11的学生找出来了,现在问题来了,我想从textBox1中输入一个学号,然后传给WHERE,怎么传哦?我怎么改都不行...郁闷...SELECTID,姓名,性别,学号,密码,联系方式,身份证号,出生日期FROMstudentWHERE(学号='"+this.textBox1.get_Te

数据库是sql server,现有两张表,用lambda表达式做一个查询

问题描述 数据库是sql server,现有两张表,用lambda表达式做一个查询 表t1有7个字段,包括id,code:表t2有5个字段,包括id: 现在要查询:t2上id与t1上的id相同且code为3的t1上的所有字段. 解决方案 var query = from x in t1 join y in t2 on x.id equals y.id where x.code == 3 select new { x, y };

求sql-求一个sql,oracle数据库问题

问题描述 求一个sql,oracle数据库问题 A表: id字段 aid字段 10000 99999 10000 88888 10001 77777 10001 66666 B表: did字段 77777 有以上两张表,A表id字段对应多个aid字段.要查询出来A表id字段,并且对应的所有aid字段都不在B表中.以上情况要求查询出10000. 求大神指点,谢谢. 解决方案 select id from A where id not in(select t.id from A t,B s wher

.net-.NET 怎么写一个事物使更新集合数据到SQL数据库时有一个报错所有数据都不更新

问题描述 .NET 怎么写一个事物使更新集合数据到SQL数据库时有一个报错所有数据都不更新 需要.NET 写一个事物在更新集合数据(即多条数据)到SQL数据库时其中有一个报错则所有数据都不更新. 方法如下,事物代码我应该怎么写 public void UpdateCollection(RequirementsPlanningCollection datas) { foreach (var RequirementsPlanning in datas) { Update(RequirementsPl

.NET ,winform窗体中实现一个 sql 数据库的内容更新到另一个sql数据库里面的低级问题

问题描述 请问怎么在.NET,winform窗体中实现一个sql数据库的内容更新到另一个sql数据库里面,比如数据库a里面增加一条信息,然后通过winform窗体的某个按钮触发事件,把这条信息同样添加到数据库b里面,两个数据库内容都一样的,本人很菜的, 解决方案 解决方案二:创建另一个数据库的链接,跟创建你当前数据库链接一样,然后用command通过sql更新解决方案三:a里面增加一条信息,那信息是不是这个程序增加的?如果是,代码里数据库连接字符串改下指向b库就行,如果不是,通过记录a库id主键

探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句_oracle

Oracle数据库查看一个进程是如何执行相关的实际SQL语句 复制代码 代码如下: SELECT b.sql_text, sid, serial#, osuser, machine      FROM v$session a, v$sqlarea b      WHERE a.sql_address = b.address;  查询前台发出的SQL语句. 复制代码 代码如下: select user_name,sql_text  from v$open_cursor  where sid in

只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名_数据库其它

昨天去面试时遇到一个这样的问题: 有一张成绩表,只有两个字段,姓名和成绩.怎样用一个sql语句查询出某个学生的姓名,成绩以及在表中的排名? 一时间我也想不出具体实现,我就提了两种思路:一种是通过join关联一个查询出他排名的sql语句:一种是通过group by来实现. 回答得连自己都觉得有点心虚.请问大家如何实现呢? 假设:表名字为Course,两个字段分别为name和score 实现语句: SELECT 学生,成绩, (SELECT COUNT(*) FROM 表 WHERE a.成绩<=成

数据库相关之SQL Server(一)

server|数据|数据库 1.1.高级查询语句1.  TRUNCATE TABLE [table_name] 删除表中的所有行,而不记录单个行删除操作. TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少. DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数

把Access数据库移植到SQL SERVER7.0

当对企业级的高性能的数据库的要求和需求增加时,客户有时需要从文件?服务器环境的Microsoft Access Jet引擎迁移到客户?服务器环境的Microsoft SQL Server.随同微软Office 2000发行的Access 2000 Upsizing Wizard(升级向导)可以把Access表格和查询迁移到SQL Server 7.0.如果你使用Access的早期版本,你也可以通过升级到Access 2000,并使用升级向导把你的应用程序移植到SQL SERVER. 如果你不喜欢