PostgreSQL的9更新SQL緩慢更新時間戳
我有超過50萬行的表,我想更新領域一些 「無時區的時間戳」。
UPDATE order_update
SET last_attempt_ts = (last_attempt_ts AT TIME ZONE 'EST') AT TIME ZONE 'UTC';
但是這個sql很慢,有沒有更好更快的方法來做到這一點?
PostgreSQL的9更新SQL緩慢更新時間戳
我有超過50萬行的表,我想更新領域一些 「無時區的時間戳」。
UPDATE order_update
SET last_attempt_ts = (last_attempt_ts AT TIME ZONE 'EST') AT TIME ZONE 'UTC';
但是這個sql很慢,有沒有更好更快的方法來做到這一點?
如果我明白你正在嘗試做的,你是從美國東部時間轉換時間戳UTC(即使壽領域沒有要調整的時間計算時間區)
你有沒有試過這種?:
UPDATE order_update
SET last_attempt_ts = last_attempt_ts + interval '5 hour';
運行它做了回滾
回滾之後;
因爲EST有夏令時,這意味着你需要添加4小時或5,某些月份,所以你確實需要運行2個查詢有同樣的效果
希望它能幫助!
好吧,對不起,讓我改變查詢 –
我得到這個錯誤: 錯誤:運算符不存在:時間戳無時區+整數 線3:... E order_update SET last_attempt_ts = last_attempt_ts + 5/24; ^ 提示:沒有操作符匹配給定的名稱和參數類型。您可能需要添加顯式類型轉換。 ********** **********錯誤 錯誤:運營商不存在:沒有時區+整數時間戳 SQL狀態:42883 提示:無需人工匹配給定名稱和參數類型。您可能需要添加顯式類型轉換。 字符:96 – klind
嗯,它有點快...(爲什麼格式化的評論像垃圾)---- UPDATE order_update SET last_attempt_ts = last_attempt_ts + interval'5 hour'; 成功返回查詢:5375416行受影響,240137毫秒執行時間。 UPDATE order_update SET last_attempt_ts =(last_attempt_ts AT TIME ZONE'EST')AT TIME ZONE'UTC'; 查詢成功返回:5375416行受影響,279018 ms執行時間。 – klind
你說你想更新一些記錄,但是你沒有where子句。 –
您正在使用該語句更新所有500.000行 - 這將需要一段時間。 –