我有一個數據庫跟蹤用戶狀態的單個表。當我完成處理該行時,不再需要將其保存在數據庫中並可以刪除。查詢性能是否從刪除SQL數據庫中的行增加?
現在讓我們說我想跟蹤行而不是刪除它(用於歷史目的,分析等)。它會更好於:
在同一個表保留數據和標記行作爲「拿來主義」(有一個額外的列或類似的東西)
從表中刪除的行將其插入到只創造了歷史目的
對於選擇#1一個單獨的表,我不知道是否留在數據庫中的不必要的行會開始影響查詢性能。 (我所有的查詢都在索引列上,所以也許這並不重要?)
對於選擇#2,我想知道是否不斷刪除行最終會導致諸如碎片之類的問題?
嗯,這是MySQL的。不應該標記兩者。 – jnortey
對於選擇#2而不是在將行轉移到另一個表之後刪除行 - 您是否可以不重用它們。將行標記爲不再使用,並在您需要跟蹤當前狀態並首先找到使用時搜索那些行 - 如果沒有添加額外的記錄。這樣你就可以避免碎片。不要說這是一個很好的解決方案 - 只是一種避免碎片的方法,如果你沿着這條路線走下去的話。 – PaulF
感謝PaulF的建議,但是我想盡可能避免重複數據。 – jnortey