帮助在MySql中使SQL查询高效

时间:2011-03-24 21:10:24

标签: mysql sql

我有30张桌子,每张桌子代表不同的社区。 每张表都包含房地产列表,其中包含“价格”,“房间数量”,“平方英尺”等栏目。

最终用户可以选择他喜欢的社区 用于筛选结果的选项,例如“至少5个房间”,“低于250k”等 按“最低价格”,“提交时间”排序结果,你明白了。

现在我是程序员而不是DBMS人。我在网上搜索但觉得尝试一次一步地构建查询将是错误的方法而没有一些指导来避免什么。

我很乐意听取StackOverflow社区的最佳方法并向他们学习。请帮我解决这个问题。

编辑:我目前正在使用MyISAM

3 个答案:

答案 0 :(得分:3)

你不应该有30张桌子。规范化您的架构:

  

<强>邻域
  ID,名称

     

<强> PROPERTY
  ID,NeighborhoodID,名称,价格,   客房,SquareFeet

然后你可以将它们加在一起:

SELECT n.Name AS Neighborhood, p.Name AS Property, Price, Rooms, SquareFeet
FROM Property AS p
INNER JOIN Neighborhood AS n ON h.NeighborhoodID = p.ID
WHERE p.NeighborhoodID = X

然后,随着数据的增长,您可能需要对表进行索引。

答案 1 :(得分:0)

您应该开始修改数据库模型。创建30个表来存储相同的数据(真实状态信息)是不够的。尝试将所有数据放在一个表中,添加一个指示邻域的列。这个社区可以指向另一张桌子,上面有附近的名字,描述......然后,您可以查询单个表以搜索所有邻域,并可选择筛选用户想要搜索的邻域。

答案 2 :(得分:0)

最好的方法是更改​​数据库模型,删除30个表,并将所有内容放在一个表中。使用您当前的模型,我没有看到任何其他方法,但创建一个巨大的联合(您可以将它放入视图,并查询此视图)。