如果我要爲留言板創建SQL數據庫,建議如下配置存儲回覆到主題?留言板的結構數據庫
表 - 主題
- 主題名稱
- 主題ID
表 - 回覆
- 帖子文字
- 主題ID
- 日期
- 時間
,我問的是,因爲它似乎對我來說,幾十萬的回覆錶行,裝載的話題後,需要很長的時間的原因,因爲服務器必須在回覆表中搜索主題ID的所有提及,然後組裝它們並將它們呈現給用戶。
關於如何構造這個的任何想法?
如果我要爲留言板創建SQL數據庫,建議如下配置存儲回覆到主題?留言板的結構數據庫
表 - 主題
表 - 回覆
,我問的是,因爲它似乎對我來說,幾十萬的回覆錶行,裝載的話題後,需要很長的時間的原因,因爲服務器必須在回覆表中搜索主題ID的所有提及,然後組裝它們並將它們呈現給用戶。
關於如何構造這個的任何想法?
這是一個非常基本的索引用例。
在您的方案中,您可能會在主題Id列(可能包含日期)上引發索引。在回覆表上進行查詢時,至少在留言板瀏覽場景中,您可能只有一個主題可以獲取回覆。您的所有疑問將是東西向的作用:
select *
from replies
where tepicId = 1 -- my specific topic id example
指數(取決於集羣或非集羣)無論是在索引(clustered),或指針位置數據的訂購訂單數據在聚簇索引(非聚簇)上 - 這樣可以更快速地檢索恰當定位的查詢中的數據(例如,在topicId上索引時要求特定的topicId)。
索引問題雖然它們(通常)可以更快地查詢(假設適當的索引),但索引越多,插入語句所用的時間就越長。這是由於數據被寫入多個位置 - 表本身以及支持該表的索引。
你可以閱讀更多的描述聚集VS這裏聚集索引:What do Clustered and Non clustered index actually mean?它解釋了它更好的比我可以:)
併爲您的具體問題,利用上述的指數,你真的不該」 t就行數而言,不會看到有關數據檢索的任何問題 - 如果有的話,它可能是需要穿越行的數據的數量。在極端情況下,如果每個「回覆」的長度爲1MB,並且有100條回覆到線程,則您需要擔心由於傳輸100MB而導致的數據傳輸時間,但從數據庫中檢索應該很好並且快速。
這看起來很適合我。確保你的ID是索引和外鍵相關的,並且引擎應該能夠足夠快地檢索記錄。 – 2015-01-27 01:32:17