如何设计MySQL表结构以利于搜索优化[重复]。

问题描述 投票:0回答:1

大家好

我需要一些建议,如何设计MySQL表结构,以利于搜索优化。

我正在创建一个房地产网站。在这一点上,我有属性表和所有相关的表。

我可以设计我的表保存这些记录在两个方面。

我有设施主表

id property_name
----------------
1  Property A
2  Property B
3  Property C

办法1属性表

id property_name
----------------
1  Property A
2  Property B
3  Property C

属性_属性表

id p_id  amenity_id
------------------------
1  1     1       
2  1     2
3  1     3
4  1     4       
5  2     1
6  2     1

办法2 属性表

id property_name  amenity_id
----------------------------
1  Property A     1,2,3,4,5
2  Property B     1,4,7,9,12  
3  Property C     3,4,7,8,9,10 

方法1查询 : 我可以连接表,并获得特定属性的所有设施名称。添加优化所需的索引。对于A属性将有20个设施的平均值。假设我有 100K 属性记录,然后得到特定属性的设施,MySQL查询将搜索在 200万 属性表的记录。

方法2 查询 : 我可以用以下方法搜索 FIND_IN_SETIN MySQL运算符。但我正在通过这个搜索主题,似乎这种方法将是资源密集型和成本更多的相同数量的数据,即100k财产记录。

任何建议将是适当的。你的想法在这种情况下或任何其他方法,我应该遵循。

mysql sql search query-optimization
1个回答
1
投票

使用第一种方法。 期间。 第二种方法是错误的,错误的,错误的。 这里有一些原因。

  • 一个SQL字符串不应该被用来存储多个值。
  • 整数应该使用适当的类型来存储。
  • 外键关系应该被声明。
  • SQL有很差的字符串处理方法。
  • SQL有一种很好的存储列表的方法,它叫做 "表 "而不是 "字符串"。
© www.soinside.com 2019 - 2024. All rights reserved.