18
回答
一个面试题
科大讯飞通用文字识别100000次/天免费使用。立即申请   

前两天面试遇到一个问题,一张表里面有30个列需要模糊查询,如何提高查询效率

百思不得其解,往各位大神帮忙看看

<无标签>
举报
for_dream
发帖于4个月前 18回/2K+阅

以下是话题补充:

  • @for_dream :补充下,是多列同时模糊查询,单纯拼接是不行的 (4个月前)
共有18个评论 最后回答: 4个月前

CONCAT吧,主要还是要看查询的变量是只有一个,还是每列算一个。还有数据量问题,就要考虑加入索引

把30列的字段concat到一个新的字段,然后给这个字段加全文索引。

同时查30个列,这样的设计有问题。可以用全文搜索引擎实现,比如: Elasticsearch

数据量不是超大,而且必须rdbms的话,每个列建索引,然后查询的时候动态拼接sql,确保执行计划走mysql: index_merge ,oracle:and-equal。

--- 共有 5 条评论 ---
zhjh 回复 @for_dream : 主从啊,从库建索引就好了,既然全部字段like,RDBMS一定读写分离了。不然就需要基于binlog同步到ES中去了。 4个月前 回复
for_dream 回复 @zhjh : 哥,你查询速度是上来了,增删就不管啦? 4个月前 回复
zhjh 回复 @for_dream : 就算是N个列同时作为查询条件,可以确保所有索引同时并行扫描啊,除了CPU负载高点,速度很快上来了。 4个月前 回复
zhjh 回复 @for_dream : 为什么不行? 4个月前 回复
for_dream这是面试题,不是真实需求,建索引肯定不行 4个月前 回复
顶部