我有3個表格存儲了用戶註冊的常用數據:語言,國家,國籍。每個表格都有字段:ID和名稱。MySQL臨時表或視圖?
我得到了一個主表用戶它存儲幾乎所有來自用戶的數據。
另一臺名爲tableregistry它具有這樣的結構:
id | tableName | tableValue
1 | finalJoin | 0
2 | language | 1
3 | country | 2
4 |nationality| 3
還有一,它存儲了一個名爲巧合公共數據共享許多用戶:
id | idUser | nTable | cValue
因此,如果我們有第80名用戶在荷蘭居住,但他是來自祕魯的本地人,並且會說中文,數據會以這種方式保存下來(考慮到荷蘭擁有ID在國家表20,祕魯國籍有識別碼34在國籍表和中國語言對語言表中的id 22)
198 | 80 | 2 | 20
199 | 80 | 3 | 34
200 | 80 | 1 | 22
所以,如果我們要進行搜索我使用存儲過程搜索巧合常見的數據只是獲得3個臨時表來獲取用戶1.來自某個國家2.在任何國家生活都不是原生的,3.說某種語言。
通過表用戶爲這些臨時表執行多重連接我們將獲得此搜索的用戶列表。
問題是。會更好地使用視圖還是隻保留臨時表策略?
好了,這是一個標準的模式,這是完全確定,但怎麼樣,如果我們的表現談論數千條記錄。而更糟糕的情況是......如果總體實體長大,那該怎麼辦?那麼,我必須爲每個新實體和各自的關係userid_entity?創建更多的表。 對不起,如果我聽起來有點討厭,但我試圖得到這個項目的最佳性能 – user1822528 2013-02-16 03:59:22
如果他們是不同的類型,那麼是的 - 我會爲每個創建一個單獨的表。只要您在關鍵列上添加索引,這種性能就會很好地擴展。 – troelskn 2013-02-16 18:00:23
您的意思是將索引放在user_rel_ *表的nationality_id,country_id和language_id列上? – user1822528 2013-02-17 21:24:47