在开发过程中,经常会碰到多个属性值存储到一个字段中。这时候查询会麻烦一点,例如下面这样:
SELECT * FROM `#__product` WHERE `quality` LIKE '%,".$qid.",%' OR `quality` LIKE '".$qid.",%' OR `quality` LIKE '%,".$qid."' OR `quality` = '".$qid."'
like 效率可想而知。
现在通过两步来实现优化:
1、优化存储字符
存储时,所有字符串前后均加: “,”。即:
原来存储的数据存储形式:
1,11,22,33,4,9
修改后的数据存储形式:
,1,11,22,33,4,9,
2、优化查询方法:使用 locate
SELECT * FROM `bx_product` WHERE LOCATE(',11,',`column`)>0
查询结果为: column 字段中包含 ,11, 的列表
如果存储形式不能修改,则可使用:
SELECT * FROM `bx_product` WHERE LOCATE(',1,',concat(',',`column`,','))>0
本文探讨了在数据库中处理多个属性值存储的优化方法,包括改进存储字符和使用locate函数进行高效查询,旨在提高查询效率。
1629

被折叠的 条评论
为什么被折叠?



