如何删除Oracle 10g中的一个或多个记录效率?

时间:2011-12-19 05:25:58

标签: oracle

  

从t_a删除,其中t_a.id位于('1','2','3')

  

从t_a删除t_a.id ???

3 个答案:

答案 0 :(得分:1)

delete from t_a where t_a.id in ('1', '2', '3')

答案 1 :(得分:1)

delete from t_a where t_a.id in ('1', '2', '3')

VS

delete from t_a where t_a.id = '1';
delete from t_a where t_a.id = '2';
delete from t_a where t_a.id = '3';

如果您在id列上有索引,效率几乎相同。

如果您没有id列的索引,第一个会更快,因为第一个会在t_a表上执行单个完整扫描,第二个方法会执行三次完整扫描。

只为了这个想法:如果你把表t_a索引组织起来,你会得到最好的效率:

CREATE TABLE t_a
(
  id    NUMBER,
  col2  VARCHAR2(10), 
  CONSTRAINT id_pk
  PRIMARY KEY
  (id)
)
ORGANIZATION INDEX;

但是你应该小心使用它(首先记录)。

答案 2 :(得分:0)

你有什么意见?您想比较这两种方法,以便更快地删除规则中的数据或什么?