关于大数据量下查询逻辑优化的问题
近日在做公司一个内部办公交流系统的搜索功能,搜索的数据源隶属于不同栏目下用户发布的数据,总共有6个栏目的数据,我是将这些数据全部导入到一张表里,然后在一个类型字段中用 1,2,3,4,5,6进行标识,现在需要对用户输入的关键字进行匹配查询,这个是大概的数据表图
因为员工身份的不同,所以在查询的时候需要对用户所加入的Room进行匹配
例如,用户A登录后,搜索,需要检查用户A加入的室有那些,然后找到用户A在这些室里发布的数据有那些,然后再匹配这些数据是否符合关键字, 有的栏目的数据还需要查询该用户的权限是否可以查看这一栏目的数据
我的实现思路就是
先分别将该用户可以查询的数据按照不同的栏目select出来然后insert到临时表
然后再对临时表进行分页查询
可是这样下来查询消耗的时间超过了1分钟
希望大家可以给点思路指点一下。。
------解决方案--------------------
还是靠 索引 吧
关键字的处理需要考虑,其它应该都比较直接
------解决方案--------------------
感觉在表数据存在冗余,
在表BizSearchInfo 中的contentText应该是nvarchar(max)类型或ntext类型,可以考虑单独一个表来存储这样的大数据。
在查询上,对应使用like 部分可以考虑全文索引,性能会大大提升。
“
先分别将该用户可以查询的数据按照不同的栏目select出来然后insert到临时表
然后再对临时表进行分页查询
可是这样下来查询消耗的时间超过了1分钟
”
要评估临时表的数据大小和执行计划成本,不然性能提升不上去。
如果Select存在多用户并发查询,可以考虑降低事务隔离级别来提升查询效率。
还有很多优化的方法,看实际的应用环境采用对应的解决方案。