2014-09-03 53 views
0

我需要一些關於逗號分隔值和SQL性能的建議。關於大量逗號分隔數據的一些建議

問:如果我在單個表上有1M逗號分隔的記錄,那麼在分割值時是否會出現主要性能問題? (顯然,在1M記錄上運行視圖時會出現性能問題)。

問:如果逗號分隔不好,還有其他替代方案可以處理這種性質的信息嗎? (這些數據將用於過濾和顯示管理儀表板上的其他信息)。

任何建議將是偉大的。

+1

**是**,逗號分隔字符串可怕,他們違反連**第一範式**數據庫設計的,他們回來困擾你,他們從你的系統性能吸 - 嘗試儘可能避免它們! **真正的解決方案**將使用適當的**表**來保存1-n條目 - 這就是關係數據庫擅長的地方! – 2014-09-03 06:44:50

+0

@marc_s檢查這種情況 - 大量的記錄(ID)被不斷插入表中,並且在每個插入記錄中,大於20分鐘的記錄被刪除。當表變大(超過2500萬條記錄)時,刪除操作開始花費太多時間。我們嘗試使用批量刪除,創建適當的索引等。沒有任何幫助優化刪除。然後我們嘗試使用帶有ID的'CSV'插入一條記錄。提取100 000行或100 000個ID並將它們轉換爲行之間的差異爲1秒,但刪除延遲固定。 – gotqn 2014-09-03 07:39:48

回答

0

如果我在單個表上有1M逗號分隔的記錄,那麼在分割這些值時是否會出現主要性能問題?

是的,你說得對。使用它不是一個好主意。儘量避免這種情況。

除了存儲逗號分隔值之外,還可以使用一個表來逐行保存所有值,而不是將逗號分隔存儲在一行中。它會提高系統的性能,並且它將用於發明數據庫的目的。

0

我不確定你的意思是「這種性質的信息」。如果信息是一致的,那麼你應該使用一個標準的關係表。另一方面,如果數據是異構的(混合,不一樣),也許根據需求逐行變化,那麼你可以考慮使用xml,它可以被索引。例如;下面的兩個csv行可以表示,而不是如xml列中所示。這只是實現此目的的一種方式,但它以可索引的方式顯示了使用xml結構化但異構數據的方式。