sql删除语句,where后面的条件为什么要按照主键作为删除条件? 是不是这样速度更快?

sql删除语句,where后面的条件为什么要按照主键作为删除条件?是不是这样速度更快?因为主键上有索引,不按照主键作为条件索引就失效了吗?不是自动生效吗?谢谢不是说一定是... sql删除语句,where后面的条件为什么要按照主键作为删除条件?
是不是这样速度更快?因为主键上有索引,不按照主键作为条件索引就失效了吗?不是自动生效吗?
谢谢
不是说一定是按照主键,是不是不安主键删除索引就没有作用了呢?
展开
 我来答
wangzhiqing999
2011-01-02 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3390万
展开全部
你把
SELECT * FROM 表 WHERE ...

DELETE FROM 表 WHERE ...
等同起来看。
其实 WHERE 处理的机制是一样的

SELECT * FROM 表 WHERE ... 就是你指定好条件, 把指定条件的数据,显示出来给你看
DELETE FROM 表 WHERE ... 就是你指定好条件, 把指定条件的数据, 删除了。

sql删除语句,where后面的条件为什么要按照主键作为删除条件?
这个主要是怕避免误操作。属于 编程习惯问题。

因为你按照主键作为删除条件,那么通常情况下,一次只删除一条数据。
如果发现删错了,恢复起来,比较容易。

如果是 非主键作为删除条件的,那么一次会删除多条记录。
如果出错了,恢复起来,就有点麻烦。

至于:是不是不安主键删除索引就没有作用了呢?
这个和 SELECT 的逻辑一样

比如你有一个表 学生
学号,姓名,性别,年龄,班级 这几个字段
其中学号是主键, 班机上面有索引。

那么你 DELETE FROM 学生 WHERE 班级 = ... 还是有索引可用的。
油腻小肚
2011-01-01 · TA获得超过1658个赞
知道小有建树答主
回答量:891
采纳率:75%
帮助的人:610万
展开全部
没有这样的说法啊,where后面可以用任何条件,不一定要主键。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xeonol
2011-01-01 · TA获得超过870个赞
知道小有建树答主
回答量:528
采纳率:0%
帮助的人:710万
展开全部
索引只是可以加快速度而已,删除时不一定需要用到索引,只在确保删除准备的前提下可以考虑用索引加快速度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rpfax31
2011-01-04 · TA获得超过3200个赞
知道小有建树答主
回答量:2049
采纳率:33%
帮助的人:963万
展开全部
delete from user_role
where role_id =
(select role_id from user,role
where role_id=user_role.role_id
and user.user_id=user_role.user_id
and user.division!=role.division)
and user_id=
(select user_id from user,role
where role_id=user_role.role_id
and user.user_id=user_role.user_id
and user.division!=role.division)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式