如何设计mysql表结构进行搜索优化

5cnsuln7  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(566)

这个问题在这里已经有答案了

在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
11个月前关门了。
大家好,
我需要一些关于如何设计搜索优化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查询:我可以连接表并获得特定属性的所有名称。添加优化所需的索引。对于一个物业,平均有20个便利设施。假设我有10万条属性记录,然后为了获得特定属性的便利设施,mysql查询将在property表的200万条记录中进行搜索。
方法2查询:我可以使用 FIND_IN_SET 或者 IN mysql操作员。但我正在浏览这个搜索主题,似乎对于相同数量的数据(即10万条财产记录),这种方法将是资源密集型的,而且成本更高。
任何建议都将被采纳。你对这个场景的想法或者我应该遵循的任何其他方法。

xcitsw88

xcitsw881#

使用第一种方法。句号。第二个是错的,错的,错的。以下是一些原因:
sql字符串不应用于存储多个值。
整数应该使用正确的类型存储。
应该声明外键关系。
sql的字符串处理方法非常差。
sql有很好的方法来存储列表;它被称为“表”而不是“字符串”。

相关问题