sql - SQL查询优化更新
问题描述
此查询需要很长时间才能更新我很想优化此查询,我们将不胜感激。
DECLARE @text1 NVARCHAR(50) = N'test1'
DECLARE @text2 NVARCHAR(50) = N'test2'
DECLARE @text3 NVARCHAR(50) = N'test3'
DECLARE @text4 NVARCHAR(50) = N'test4'
DECLARE @text5 NVARCHAR(50) = N'test5'
UPDATE dbo.Session SET
text1 = CASE
WHEN text1 IS NOT NULL THEN @text1
ELSE text1 END ,
text2 = CASE
WHEN text2 IS NOT NULL THEN @text2
ELSE text2 END,
text3 = CASE
WHEN text3 IS NOT NULL THEN @text3
ELSE text3 END,
text4 = CASE
WHEN text4 IS NOT NULL THEN @text4
ELSE text4 END,
text5 = CASE
WHEN text5 IS NOT NULL THEN @text5
ELSE text5 END
解决方案
创建新表通常比更新现有表更优化(时间上)。
create table dbo.Session_1 nologging as
select /*Insert the other columns from the old table that you want to keep here*/
decode(text1, null, null, 'test1') as text1,
decode(text2, null, null, 'test1') as text2,
decode(text3, null, null, 'test1') as text3,
decode(text4, null, null, 'test1') as text4,
decode(text5, null, null, 'test1') as text5
from dbo.Session;
然后您可以删除旧表并重命名新表:
drop table dbo.Session;
alter table dbo.Session_1
rename to dbo.Session;
推荐阅读
- javascript - MongoDB .remove() 匹配多个条件
- java - Java:如何在具有多个类的同时比较数组中的对象
- flutter - 按钮未显示,出现 120 溢出错误
- neo4j - 在 Neo4J 中创建具有相同属性的节点之间的关系
- amazon-ec2 - 如何在两个 EC2 实例之间设置 AWS 负载平衡
- html - 带有描述和图像的 URL 元标记(在 Skype、Discord 中)
- javascript - 无法添加 isLoading
- mysql - 我应该使用 UUID 还是常规 auto_increment 作为用户 ID?
- c++11 - 使用 python ctypes 通过引用 c++ 函数传递一个长向量
- c - C - 来自用户输入数字的所有数字组合