查看: 2494|回复: 2
|
SQL query
[复制链接]
|
|
本帖最后由 kucci 于 30-7-2015 02:16 PM 编辑
USE databaseA
GO
UPDATE tableX
SET [a] = [a]*4
WHERE [time] < Cast('2015-07-10' as datetime) AND
[a]*4 <= 48
UPDATE tableX
SET [e]= [e] *4
WHERE [time] < Cast('2015-07-10' as datetime) AND
[e]*4 <= 24
UPDATE tableX
SET [c] = [c]*4
WHERE [time] < Cast('2015-07-10' as datetime) AND
[c]*4 <= 48
UPDATE tableX
SET [d] = [d]*4
WHERE [time] < Cast('2015-07-10' as datetime) AND
[d]*4 <= 24
GO
虽然这个 script 没有问题,请问可以优化更好吗?
|
|
|
|
|
|
|
|
发表于 30-7-2015 05:01 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 31-7-2015 10:10 AM
|
显示全部楼层
早上好,
简单的Update Statement 基本上没办法做所谓的 query optimization,
除非你有用到 In / Join 等
在你的Case, 优化比较外部的东西,
例如:
- UPDATE tableX
- SET [a] = [a]*4
- WHERE [time] < Cast('2015-07-10' as datetime) AND
- [a]*4 <= 48
复制代码
你会用到 time 跟 a 这两个field 作为update 条件,
你可以尝试将 time 跟 a这两个field 设定 b-tree index
这样如果你的资料多, 你的update 依然会快
另外如果你的资料很多(以几milion 这样算)
为你的update statement 加入确切的时间会缩小需要update 的笔数, 进而改进速度
例如:
- UPDATE tableX
- SET [a] = [a]*4
- WHERE [time] < Cast('2015-07-10' as datetime) AND
- [time] > Cast('2015-07-01' as datetime) AND
- [a]*4 <= 48
复制代码
目前我想到的只有这样.
共勉之.
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|