怎么删除SQL删除数据库表中的数据里某一个表下面大于240的数据。

练习题(答案)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
练习题(答案)
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩11页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看:4701|回复:14
最有价值午饭
不小心在数据库中一个表格多增加的一列,发现全是null,想把这列删除掉,却发现不会语句,望高手指教。
本帖最后由 ak 于
11:06 编辑
最有价值午饭
终于会了,谢谢呆呆同学
呵呵 很好啊
Microsoft SQL Server MVP
最有价值午饭
引用:原帖由 lzf328 于
16:59 发表
呵呵 很好啊 第一次发帖,谢谢光顾
引用:原帖由 ak 于
17:12 发表
第一次发帖,谢谢光顾 自己解决的问题印象更深刻 呵呵
Microsoft SQL Server MVP
最有价值午饭
引用:原帖由 lzf328 于
17:29 发表
自己解决的问题印象更深刻 呵呵 主要是刚开始接触数据库这块,有些东西其实不难,不过找不到头绪而已,见笑了
最有价值午饭
引用:原帖由 lzf328 于
17:29 发表
自己解决的问题印象更深刻 呵呵 我还是想知道,如果通过语句来删除某个列呢?就是alter add 的逆操作
alter table TAB_NAME drop COL_NAME
SQL Server MCITP, MVP, MCT, DBA
楼上版主已经给出代码了,很多时候GOOGLE一下还是可以得到结果的
Microsoft SQL Server MVP
引用:原帖由 lzf328 于
19:08 发表
楼上版主已经给出代码了,很多时候GOOGLE一下还是可以得到结果的 还有就是sql server的帮助文档确实挺好用的,多按F1 :)
看帮助文档很重要!
SQL Server MCITP, MVP, MCT, DBA
最有价值午饭
引用:原帖由 seusoftware 于
21:48 发表
还有就是sql server的帮助文档确实挺好用的,多按F1 :) 是么,就是在写语句的时候么?以后多试试
最有价值午饭
引用:原帖由 seusoftware 于
18:01 发表
alter table TAB_NAME drop COL_NAME 谢谢了哦
引用:原帖由 ak 于
21:52 发表
是么,就是在写语句的时候么?以后多试试 是的,把光标停留在某个sql关键字上按F1,就会跳转到相应的帮助;
或者直接按F1,sql server帮助有检索功能,通过你输入的关键字。
SQL Server MCITP, MVP, MCT, DBA
最有价值午饭
引用:原帖由 seusoftware 于
22:10 发表
是的,把光标停留在某个sql关键字上按F1,就会跳转到相应的帮助;
或者直接按F1,sql server帮助有检索功能,通过你输入的关键字。 十分感谢
BOL还是很方便的尤其没有网络的情况下
Microsoft SQL Server MVP关于删除数据库中百万级数据的解决方案 - 45度的天空 - ITeye博客
博客分类:
问题描述:在我们数据中由于是根据当时的情况对客户表和客户分类表新增一个中间,又因为是中期新增,所以中间表的建表结构是将客户表的和客户分组表的分别写入到中间表里面,这样中间表就有三个字段主键客户表客户分组表,当时由于数据量大处理不过来所以没有建立级联,在客户表里面有许多导入数据的功能,也有删除数据的功能由于删除和导入操作频繁没有管理中间表的空间,致使中间表荣升到数据库第一大表快超过达到千万数据,苦于找方法瘦身,就找到了中间表的内容,删除当时删除客户资料没有删除中间表数据的内容:就有了以下的解决方案:
利用语句删除:
由于表中的数据是,表数据是,上面的一条语句在服务器上执行了个小时后没有任何反应状态是一直是这样的情况,所以放弃没有进行删除。
第二次删除数据又想想利用存储过程删除也想就会快点所以就找相关的资料写存储过程,如下:
select count(*) into coun1 from m_customer_category where customer_sid_fk not in(select customer_sid from customer);
while coun1 & 0 do
delete from m_customer_category where customer_sid_fk not in(select customer_sid from customer) limit 10000;
set coun1=coun1-10000;
因为在本机上数据比服务器上的数据少了很多,在本机上可以正常执行就是没什么输出,数据也删除,本以为可以执行,可是在第二次晚上更新的时候还是如上的情况还是没有反应,在执行过个小时后我又放弃了。
查找原因可能是数据量大并且建立有所以,所以造成批量删除并没什么效果,再次思考能不能做单个删除,也就是说找到一条记录的后在根据删除数据,在利用存储过程在循环中删除数据应该就没有问题了,所以做了如下修改:
我将符合条件的数据的都查找出来放到一张自己新建立的临时表里面如下语句:
m_customer_category_back (select id from m_customer_category where customer_sid_fk not in(select customer_sid from customer));
表中是建立索引的所以执行查询的时候是不会很慢的,我是看中他的查询条件才这样操作的,数据很快多分钟就执行完了数据,这下好了,修改下存储过程就可以实现单条删除数据了,根据这些条件即时不关闭数据的情况也可以正常的删除数据存储过程如下:
select count(*) into coun1 from m_customer_category_back
while coun1 & 0 do
count2 from m_customer_category_back LIMIT 1;
delete from m_customer_category where id = count2;
from m_customer_category_back where id=count2;
set coun1=coun1-1;
由于害怕服务器长时间造成占用时间过程所以在查询的时候做了小小的修改也就是说我调用一次这个存储过程的时候只删除数据。基本告一段落如果有数据偶尔执行一下就好了有输出,删除数据不是很快但也很有效果,也不影响业务的正常使用。
论坛回复 /
(20 / 11061)
还有也许 写道兄弟们呀,我现在还有个头大的问题,就是我们的customer已经860万了,而中间表m_customer_category 也有900多万了,如果按类型查找客户资料的话巨慢,如何解决呀,就是customer,m_customer_category,custoemr_category三张表多对多关系,怎么按类型快速查找呀
我真的不明白你们为什么一定要使用多对多的关系,现在你的数据量已经达到这种级别了,你可以考虑第一、使用分区分表;第二、引入Lucene,将客户资料的搜索交给全文索引来处理,他可以解决你搜索的性能。如果对实时性要求很高的话,你可以使用Lucene3.0,Lucene2.0不支持实时索引。
分区分表已经晚了吧,这是在规划项目时考虑好的,第二种很实用,我去学习一下Lucene的使用。
兄弟们呀,我现在还有个头大的问题,就是我们的customer已经860万了,而中间表m_customer_category 也有900多万了,如果按类型查找客户资料的话巨慢,如何解决呀,就是customer,m_customer_category,custoemr_category三张表多对多关系,怎么按类型快速查找呀
我真的不明白你们为什么一定要使用多对多的关系,现在你的数据量已经达到这种级别了,你可以考虑第一、使用分区分表;第二、引入Lucene,将客户资料的搜索交给全文索引来处理,他可以解决你搜索的性能。如果对实时性要求很高的话,你可以使用Lucene3.0,Lucene2.0不支持实时索引。
zy8643954 写道1.不要迷信所有的查询必须使用索引。
2.查询需要删除的数据的sql,不会变成这个case的性能瓶颈。
3.如果选择用存储过程的话,就要减少 pl/sql引擎 和 sql引擎的切换。
一看就是高手,能不能给小弟详细说个例子呢?
我才入门呢,我在前面 写了一个存储过程的。楼主没看见?
1.不要迷信所有的查询必须使用索引。
2.查询需要删除的数据的sql,不会变成这个case的性能瓶颈。
3.如果选择用存储过程的话,就要减少 pl/sql引擎 和 sql引擎的切换。
一看就是高手,能不能给小弟详细说个例子呢?
楼主
你这是基本的SQL问题
换成如下语句试试:
delete from m_customer_category where not exists(select 1 from customer where m_customer_category.customer_sid_fk=customer_sid)
如果需要花费的时间还是很长,你可以将m_customer_category中的数据分成10次来执行。
如:delete from m_customer_category where ID&=1000000 and ID &200000 not exists(select 1 from customer where m_customer_category.customer_sid_fk=customer_sid)
这样基本可以解决你的问题。
这个是正解
in 是不走索引的,所以非常慢
浏览: 103403 次
来自: 郑州
chinahezhiyongpLR8ZC- ...
标记下! 但是还是有点犹豫 要不要这么做
我都想不明白了,为啥都是
oooO ↘┏━┓ ↙ Oooo
我本来也想用的,但是找不到下载插件的地方,so.....
不如用插件式的安装方法http://kissroom112.i ...

我要回帖

更多关于 删除数据库表的语句 的文章

 

随机推荐