我有一個每60分鐘運行一次的進程。在一張桌子上,我需要刪除所有數據,然後從不同的表中插入記錄。問題是刪除並重新插入數據需要很長時間。當表沒有數據時,我恐怕用戶會看到這個。有沒有用戶看到這個刷新數據的方法?如何刪除所有數據然後插入新數據
0
A
回答
0
你是截斷而不是刪除?截斷(記錄時)比刪除要快得多。
如果您不能截斷嘗試一次刪除1000-10000行(較小的日誌積累和刪除大量行的速度大幅增加。)
如果你真的想快速的性能,您可以創建第二個表,用數據填充它,然後刪除第一個表並將第二個表重命名爲第一個表。當你這樣做時,你將失去表上的所有權限,因此一定要重新應用重命名錶的權限。
2
如果你想從表中刪除所有數據,然後使用TRUNCATE TABLE
而不是delete
- 它會更快。
至於插件這是一個有點很難說,因爲你並沒有透露任何細節,但你可以嘗試是:
- 選項1 - 使用臨時表
create table table_temp as select * from original_table where rownum < 1; //insert into table_temp drop table original_table; Exec sp_rename 'table_temp' , 'original_table'
- 選項2 - 使用2 TA bles「主動 - 被動」 - 有2個數據表和一個視圖來選擇它們。該視圖將與第三個表格連接,該表格將指定從哪個表格中選擇。一種「主動 - 被動」的概念。 爲了證明概念:
with active_table as (select 'table1_active' active_table) select 1 data where 'table1_active' in (select * from active_table) union all select 2 where 'table2_active' in (select * from active_table) //This returns only one record with the "1"
0
我會按照下面的方法。當我解決爲什麼刪除和重新插入需要時間。
- 創建具有相同數據的新表(
t1
)爲oldtable(maintable
) - 現在做你的東西上
t1
。 - 當你的東西完成後,將
t1
重命名爲maintable
。
0
使其基於序列,您在記錄中複製的所有記錄都有一個序列號(所有記錄中都複製相同),另一個文件保存哪個序列處於活動狀態,並且您始終選擇對此表的聯接 - 當您複製新記錄時,它們會有一個尚未激活的新序列,當它們全部複製完成時,序列表會更新爲新序列 - 冗餘序列記錄將在您閒暇時刪除。
例
我們假設你的表有加場SeriesNo
和表ActiveSeries
有場SeriesNo
。
你的表的所有查詢:
SELECT *
FROM YourTable Y
JOIN ActiveSeries A
ON A.SeriesNo = Y.SeriesNo
然後在ActiveSeries
更新SeriesNo
,使新系列可立即記錄。
0
如果您要刪除表中的所有行,則可以考慮對錶使用TRUNCATE語句而不是DELETE。它會加快你的過程的一部分。請記住,這將重置您桌上可能擁有的任何身份種子。 正如所建議的,您可以將此過程包裝在事務中,並根據您設置事務隔離級別的方式,您可以控制用戶在事務過程中查詢數據時將看到的內容。
相關問題
- 1. MySQL插入然後更新表數據
- 2. SQL MERGE INTO - 如何刪除然後插入匹配的/現有的數據?
- 3. 插入數據時刪除數據
- 4. 所有數據有刪除
- 5. 如何插入,更新,刪除從表格中導入數據?
- 6. 將數據插入到已有數據的表格中,然後刪除會話期間未觸及的數據
- 7. JTable如何在插入刪除或更新數據後刷新表模型。
- 8. 燒瓶:在數據庫中插入,刪除和更新後發佈數據
- 9. 使用Pelops在cassandra中刪除行後重新插入數據
- 10. 數據插入/刪除後自動更新DataGrid
- 11. 如何刪除表中的所有數據並在VB.NET中的Access數據庫中插入新記錄?
- 12. 如何向表中插入新數據,然後再次將新數據插入到同一表中
- 13. 刪除數據庫條目後重新載入html表數據
- 14. TelerikRadGrid如何插入,更新和刪除到SQL數據庫
- 15. 如何從數據庫表中刪除所有數據?
- 16. 如何從Ember數據存儲中刪除所有數據?
- 17. 如何在向數據庫插入數據後刷新JTable?
- 18. PostgreSQL的 - 刪除是一個多小時舊的數據,然後新的數據插入到同一個表
- 19. 刪除TinyMCE的新數據,然後重新初始化
- 20. 刪除所有Couchbase數據/文檔ios(或刪除所有ios數據?)
- 21. 提取數據,然後插入到Excel
- 22. 插入,然後從Oracle數據庫
- 23. 如何從MySQL表中刪除所有數據並用新數據填充表
- 24. 如何從所有數據庫數據輸入中刪除下劃線?
- 25. 如何刪除Firebase中的所有條目(刪除數據)?
- 26. 獲取所有數據庫動作(插入,更新,刪除,更改,...)信息
- 27. 將數據存儲在內存中,然後插入所有數據並逐個插入
- 28. 如何在表單數據插入數據庫後清除表格數據
- 29. 從SQL Server數據庫中刪除所有數據,然後重新輸入另一個數據庫中的數據?
- 30. 插入到Mysql數據庫後更新數據集數據
更改表名,然後創建新的並插入。 – NEER