如何优化像12306用的Like '%...%'的查询
最近爆的12306用的Like '%...%'存在性能问题,有人甚至说是低级的编程,我有点不太明白,如果实在是需要模糊搜索某些数据,不用Like,可以使用些什么方式对查询进行优化呢?
------解决方案--------------------全局索引搜索。
------解决方案--------------------
------解决方案--------------------全文本索引能使么?
------解决方案--------------------
------解决方案--------------------从错误信息来看,貌似没有很好的避免SQL注入。
------解决方案--------------------我帮你顶上去,不客气。
------解决方案--------------------最近这个很火
------解决方案--------------------真要做好12306的网站,可能需要用nosql来做数据库了
------解决方案--------------------实际上,当客户需要一个模糊查询的时候,这个问题就可以转换为关键字的查询,
于是就有很多简单的算法可以产生牛逼的效果
------解决方案--------------------我的理解是用like %~%;其实是模糊匹配,也就是像‘%黄%’,就是一个存在有黄字的都搜索,搜索全部可能,就是有100条记录,要搜索300次,而用‘黄‘就搜索100次,就是模糊匹配搜的次数太多,效率太低,如果用在一个大型数据库,假设有1亿条记录,就要搜索3亿次,那么有时会把系统都瘫了
------解决方案--------------------模糊查询还是必要的,就看你怎么处理这个模糊查询,在什么级别上查询了。
比如例图中,车种类型,这里应该允许模糊查询,车种类型应该是一个信息表,里面的数据应该不是很多。如果使用模糊查询,列出所有带有"黄"的车型,然后,选取这个车型,再在大表中进行精确查找就行。
------解决方案--------------------其实那么大的费用,外包给百度谷歌做得更好。%黄%这种搜索方法,那就够狠了,还会出现大量没有意义的数据。真想见一下那些程序员。
------解决方案--------------------我也有同样的疑惑。
------解决方案--------------------关于数据库 还有很多我没接触到的东西
------解决方案--------------------关键还是以 多行的子表 代替 “,张三,李四,王二麻子,”这样的单字段罗列
------解决方案--------------------