我正在开发一个项目,我将在MySQL表中存储数组/列表,并对列表中的信息进行基于PHP的搜索。
我基本上认为这样做是为了输入这样的数据:
column1
,2,6,9,30,
,3,5,8,
,5,6,13,16,17,
column2
,b,g,k,ro,
,c,e,t,
,d,h,i,ar,ez,
然后像这样搜索:
SELECT * FROM table_name WHERE column1 LIKE '%,3,%' OR column2 LIKE '%,h,%'
但是我可能要在column1中搜索五个项目而在column2中搜索三个项目,这会使查询变长并且可能很慢?...
我想知道的是,这是一种聪明的方法吗?是否有更快和/或更好的方法?..
如果您有疑问或者我不够清楚,请告诉我。
答案 0 :(得分:4)
如果我理解正确,那么使DB结构更好地匹配数组而不是存储字符串数组是有意义的。
例如,您可以使用“LIST”和“LIST_ITEM”表,其中包含从LIST_ITEM.LIST_ID到LIST.LIST_ID的外键。 List_Item中的每个条目都是该列表中的条目。然后查询这些列表项可以返回它们所包含的列表比遍历长字符串和比较字符要快得多。