让模糊搜搜转换成等值条件搜索

来源:互联网 发布:文华期货仿真交易软件 编辑:程序博客网 时间:2024/06/17 00:03



创建1个两个字段SQL表 table1 两个字段分别是   姓   和  学生id      
这样来解决模糊搜索

首先 select * from table1 where 姓='张'   返回符合条件的所有张姓学生id集合

有了id就能从redis读出模糊查询的所有学生

组合查询要用redis实现就复杂了 ,还是用1个字段做条件来查询

再建立一个两个字段的表 table2   
分数范围最大值        学生id  
60                           100000     //不及格的学生编号 在60分以下
60                           100001     //不及格的学生编号 在60分以下
60                           100002    //不及格的学生编号 在60分以下
80                           100003    //及格的学生编号 在80分以下
80                           100004    //及格的学生编号 在80分以下
90                           100005    //及格的学生编号 在80分以下
90                           100006    //及格的学生编号 在90分以下
100                         100007    //及格的学生编号 在101分以下
100                         100008    //及格的学生编号 在101分以下
100                         100009    //及格的学生编号 在101分以下

将分数范围最大值字段建立索引 这样过滤查询就不会扫描全表了
例如 输入一个88分的 先要把88分在java或者php编程语言里快速归类算出分数范围最大值90
SQL查询条件就这样写
select * from table2 where 分数=90

假如要查询90分以上的,那么SQL这样写
select * from table2 where 分数=100

有了id就能从redis读出模糊查询的所有学生

那么redis学生的就用get  set这样的读写指令  不建议用hash  或者有序集合 因为他们的速度都没有get  set快  因为get 和 set是可以分布式读写的哦   有序集合和哈希类不能分布式读取 因为数据都集中到1台电脑上去了

假如学生是个1000万以上的记录表  上面的是按照大数据的玩法实现的  让数据冗余,可以提高SQL的查询速度

这种思维方式:其实就是分词关键词快速搜索实现技巧

0 0
原创粉丝点击