更新NULL字段与最新记录

扎马拉德

我有一个包含空字段的表。这需要从另一个表中填充。尽管从另一个表获取信息的语句很简单,但我仍担心更新的性能。

通过计划每30分钟运行一次的脚本来完成更新。

哪个更好:

  • 使用where字段为null的语句更新

    UPDATE table1 SET freefield=(SELECT name FROM table2 WHERE table1.keyfield=table2.field) WHERE freefield IS NULL;

  • 使用仅更新最后X条记录的语句进行更新

    UPDATE table1 SET freefield=(SELECT name FROM table2 WHERE table1.keyfield=table2.field) WHERE ROWID IN ( SELECT ROWID FROM ( SELECT keyfield FROM table1 ORDER BY keyfield DESC ) WHERE ROWNUM < 300 );

table1.keyfield和table2.field已建立索引并具有主/ fk关系。table1.freefield和table2.name未被索引,而是文本字段。

目前,该表只有约10万条记录,但会大量增加。从本质上讲,我想问的是它需要更长的时间来搜索表中的空字段或对其进行排序并仅使用指定的最新数字。

最终计划是实施一个触发器,以便在创建时可以正确更新记录,但是由于质量控制等原因,直到下一个软件版本才能执行。

数据库是Oracle 10.2.0.5

该表本身具有多个索引,包括主键(递增数字),该索引将用于对最新记录进行排序和更新。

罗尼斯

您可以使用基于函数的索引来仅标识具有NULL的行。这样的索引将非常小。

create index index_name 
    on owner.table_name(case when your_column is null then 'x' end) compress 1;

要更新该列,您可以执行以下操作:

update owner.table_name
   set your_column = <your-logic-here>
 where (case when your_column is null then 'x' end) = 'x';

更改初始问题后进行编辑:您的两个选项给出的结果不同。只有选项1才能实现“更新所有缺少的缺失freefield”的要求。

如果每30分钟获得300个以上的插入,则不会使用选项2更新所有插入。此外,您还引入了不必要的依赖关系,将来可能会成立,也可能不会成立:无论何时记录R1.keyfield>记录R2 .keyfield,则记录R1比R2更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

获取最新记录,字段可以为null

来自分类Dev

获取最新记录,字段可以为null

来自分类Dev

查询以选择最新的更新记录

来自分类Dev

Clojure:更新记录字段的值

来自分类Dev

使用以前的记录值更新最新记录

来自分类Dev

按日期时间字段获取最新的MongoDB记录

来自分类Dev

触摸MYSQL记录以更新TIMESTAMP字段

来自分类Dev

更新多个字段以获取多个记录

来自分类Dev

在Django中使用图片字段更新记录?

来自分类Dev

如何更新CloudKit中记录类型的字段?

来自分类Dev

Delphi:更新SQLite记录的多个字段

来自分类Dev

Yii-使用文件字段更新记录

来自分类Dev

Ruby:查找SQL记录并更新布尔字段

来自分类Dev

在Django中使用图片字段更新记录?

来自分类Dev

计算特定字段为Null的记录

来自分类Dev

如何使用最新记录更新SQL Server表

来自分类Dev

如何在SQL中获取最新的更新记录?

来自分类Dev

根据最新记录更新另一个表

来自分类Dev

在Ubuntu 12.04 LTS的最新更新之后记录问题

来自分类Dev

如何更新给定周(sun - sat)内创建的除最新记录之外的所有记录?

来自分类Dev

无法使用 Null 更新 Nullable 字段

来自分类Dev

使用Linq和EF无法更新记录的多个字段

来自分类Dev

使用POJO更新JOOQ记录中仅更改的字段

来自分类Dev

Rails根据其字段值更新多个记录

来自分类Dev

PyMongo通过游标更新带有计算字段的数组记录

来自分类Dev

Mongo使用空字段更新所有记录

来自分类Dev

实体框架核心:如何使用嵌套字段更新记录?

来自分类Dev

Django REST:ManyToMany字段-不要更新其他记录

来自分类Dev

使用Haskell中的函数更新记录中的字段

Related 相关文章

热门标签

归档