问题如下: 假设这样一种情况,首先说明,信息是存放在mysql数据库中的。情况如下,A表信息堆是百万级信息堆(每条信息长度不长,基本在20字符以内,属于简短词语),B则是一条普通信息(长度大概在500字符左右),问,有哪种最有效的方式可以来判断B信息中
问题如下:
假设这样一种情况,首先说明,信息是存放在mysql数据库中的。情况如下,A表信息堆是百万级信息堆(每条信息长度不长,基本在20字符以内,属于简短词语),B则是一条普通信息(长度大概在500字符左右),问,有哪种最有效的方式可以来判断B信息中是否包含有A堆中的信息并返回包含的信息?
在此提供一种解法,如果大家有更好的解法欢迎大家留言交流!
由于A信息堆数据量比较大并存放于数据库中,故产生一个很简单的解法,直接通过一条sql解决,当然,这样会衍生一个问题就是sql优化,如何减少搜索时间就要看你自己的优化手段啦。
查询sql如下:
select GROUP_CONCAT(匹配表字段) content from 表名 where instr(B表信息,匹配表字段)>0
另外,大家还可以采用全文检索的方式来提高检索速度
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn