我正在構建一個社區網站,登錄將通過電子郵件進行,成員將能夠更改其名稱/暱稱。SQL表設計建議
您是否認爲我應該在成員表中使用成員的其他屬性保留成員名稱/暱稱或創建另一個表,在該表上寫入成員名稱/暱稱和關聯成員的ID。
我贊成第二種選擇,因爲我認爲從它拉出成員名稱會更快。
它是正確/更好的方式?
更新:其他表的原因是我需要爲不同部分拉用戶名。例如論壇。在from主題中爲每個帖子的每個用戶名查詢小型表格會不會更快?
我正在構建一個社區網站,登錄將通過電子郵件進行,成員將能夠更改其名稱/暱稱。SQL表設計建議
您是否認爲我應該在成員表中使用成員的其他屬性保留成員名稱/暱稱或創建另一個表,在該表上寫入成員名稱/暱稱和關聯成員的ID。
我贊成第二種選擇,因爲我認爲從它拉出成員名稱會更快。
它是正確/更好的方式?
更新:其他表的原因是我需要爲不同部分拉用戶名。例如論壇。在from主題中爲每個帖子的每個用戶名查詢小型表格會不會更快?
爲什麼你認爲第二個選項會更快?
如果暱稱是與成員ID所需的一對一關係,則存儲它們的適當位置在同一個表中。這仍然是一個索引單記錄搜索,因此它應該或多或少地像您的其他選項一樣快。
事實上,這個解決方案可能會更快,因爲您可以在相同的 SELECT中獲得暱稱,因爲您可以獲得其他信息。
更新到更新問題的答案:
第二個表不在行的數量方面任何較小。 SQL搜索中的主要因素是1)表中的記錄數和2)來自搜索的索引部分的可能匹配數。
在這種情況下,較小表中的記錄數與完全相同。並且索引返回的可能匹配記錄的數量將始終爲1,因爲該成員標識是唯一的。
您正在搜索的表中的列數通常與返回數據所用的時間無關(您在SELECT語句中實際列出的列的數量可能會產生影響,但不管這些列是相同的表你正在尋找)。
SQL數據庫非常非常擅長查找數據。正確構建您的數據,並讓數據庫擔心返回。正如他們所說,過早優化是所有邪惡的根源。
我會保留它一張表,並在該表中設置電子郵件的唯一約束。
我看不到添加另一個表的一個優點。
是的,將會員ID與其他房產相關聯是正確的選擇。
只需在名稱上創建索引即可加快查詢速度。
轉到第一個選項:在成員表中保留名稱/暱稱。在這種情況下,不需要引入額外的表格以及與之相關聯的開銷。
請參閱我的更新爲我的理由 – nLL