2011-03-02 81 views
1

我正在創建一個網站,其中列出了每個列中可能存在的唯一/不同值。 用戶將選擇值並執行搜索。mysql,搜索表格能力

兩種方法我想的:在旅途

1>,當用戶選擇一個表,我將運行一系列對於每列不同的命令。 我注意到這種方法有一個減速,但不涉及太多的工作從我

2>創建某種選項列表爲每列和保存到某種文件。這似乎是用戶最快的方法,但涉及一些工作來創建具有不同值的表格彙總文件。

有人可以提出一個很好的解決方案嗎?

回答

0

你的第三個選擇是重新考慮你的數據庫設計。如果您的信息是重複的列,那麼創建存儲實際值的附加表格可能很有意義,然後在「主」表格中僅存儲鏈接回的標識。

然後,您可以將唯一值存儲在關係表中,並調用每個相關表來創建您的下拉列表。

例如,假設你有一個表

Users 
user_id 
fname 
lname 
city 
state 
zip 
favorite_color 

如果你要搶的城市,最喜歡的顏色,你需要經過所有的行,以確定該信息的不同值。所以,你最終數據的N *場掃描,用方法1

如果改爲創建了一個佈局,你有兩個額外的表來填充表:

City 
city_id 
city_name 

favorite_color 
favorite_color_id 
color_name 

然後修改您的用戶表爲

Users 
user_id 
fname 
lname 
city_id 
state 
zip 
favorite_color_id 

然後你做了幾件事情。首先,如果你需要所有的城市和顏色,你只能通過X記錄,其中X是唯一的城市/顏色數量。此外,您的表格用戶的整體大小將變得更小,因爲不是一遍又一遍地存儲字符串,而只是存儲佔用較少空間的ID。

最後,你會得到一個更強大的解決方案,比你現在正在考慮的方法更具可擴展性。