mysql,搜索表能力

时间:2011-03-02 18:16:20

标签: mysql

我正在创建一个网站,其中列出了每个列中可能存在的唯一/不同值。 用户将选择值并执行搜索。

我想到的两种方法:

1>在移动中,当用户选择一个表时,我将为每列运行一系列不同的命令。 我注意到这种方法有所减缓但不涉及我的工作

2 - ;为每列创建某种选项列表并保存到某种文件中。这似乎是用户最快的方法,但需要一些工作来创建不同值的表摘要文件。

有人可以提出一个好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您的第三个选择是重新考虑您的数据库设计。如果你有重复信息的列,那么创建存储实际值的其他表可能是有意义的,然后在'main'表中只存储链接回来的id。

然后,您可以将唯一值存储在关系表中,只需调用每个相关表来创建下拉列表。

例如,假设你有一张桌子

Users
user_id
fname
lname
city
state
zip
favorite_color

如果您要获取城市和喜欢的颜色的不同值,则需要遍历所有行以确定该信息。因此,您最终会使用方法1对数据进行N * Fields扫描以填充表格。

如果您改为创建了一个包含两个附加表的布局:

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。

最终,您最终得到了一个更强大的解决方案,该解决方案比您现在正在考虑的方法更具可扩展性。