时间:2021-07-01 10:21:17 帮助过:68人阅读
全文检索肯定比like查询快
但 mysql 的全文检索并不支持中文,需要安装第三方软件
你把 所选属性的int值整合成一个字符串 ,那么你是如何能查询的到的?
前台传入的属性选项整合成字符串,然后与数据表里的属性字符串进行匹配。。刚才想了下也不行,如果顺序不对,匹配就会失败。。。
全文检索肯定比like查询快
但 mysql 的全文检索并不支持中文,需要安装第三方软件
你把 所选属性的int值整合成一个字符串 ,那么你是如何能查询的到的?
属性筛选还有什么好的思路呢???
结合 find_in_set 和 substring_index 两个函数就可以了
当然属性串样组织成这样:
属性1,值1,属性2,值2,属性3,值3,属性4,值4,属性5,值5,.....
这2个函数的效率怎么样啊,除了这2个函数,额外还有其他5-8个查询条件。。上万条记录,cpu撑得住吗???
结合 find_in_set 和 substring_index 两个函数就可以了
当然属性串样组织成这样:
属性1,值1,属性2,值2,属性3,值3,属性4,值4,属性5,值5,.....
先不要奢谈效率,结果还没有出来呢,哪来的效率?
你先在 mysql 管理器中执行下面的查询,体会一下函数的用法
select substring_index(substring_index(n,',',find_in_set('属性2', n)),',',-1)from (select '属性1,值1,属性2,值2,属性3,值3,属性4,值4,属性5,值5' as n) t
分表....
其实象这种需求应考虑按位与方式写值,而不应合成字符串写入
1:属性1
2:属性2
4:属性3
8:属性4
......
属性1+属性3=>1+4=5 ,数据库写入整型值5
(5&1)== 1 -->包含属性1
数据库操作也差不多:where (options & 1)=1
其实象这种需求应考虑按位与方式写值,而不应合成字符串写入
1:属性1
2:属性2
4:属性3
8:属性4
......
属性1+属性3=>1+4=5 ,数据库写入整型值5
(5&1)== 1 -->包含属性1
数据库操作也差不多:where (options & 1)=1
不是很明白 能说的再详细点吗
能举个更详细的例子吗??类似排列组合的算法??
其实象这种需求应考虑按位与方式写值,而不应合成字符串写入
1:属性1
2:属性2
4:属性3
8:属性4
......
属性1+属性3=>1+4=5 ,数据库写入整型值5
(5&1)== 1 -->包含属性1
数据库操作也差不多:where (options & 1)=1
这个例子已经够详细了,楼主去多了解整数间的按位与运算,其实也就是二进制数的与运算