多表(百万级)关联查询效率问题和大字段建立索引问题求教
一个多表关联的查询(每个表都是百万级的,11对应关系,表结构无法改动)
类似与这样的结构:
select a.id from
(selece a.id,a.username,a.last_update from tableA (nolock)) a
inner join (select b.username,keyword from tableB b(nolock) where XXXXX) b on a.username=b.username
inner join (select b.username,keyword from tableC c (nolock)where XXXXX) c on a.username=c.username
where (b.keyword like '%xx%' or c.keyword like '%xx%')
order by a.last_update
完整的查询根本动不了
分开单独查询INNER语句和单独查询LIKE语句,分别需要20秒和15秒,请问从SQL SERVER分析角度来讲,这个SQL用什么样的结构会查询更快呢?(理论上的就可以)
我尝试过这样的结构:
select a.id from tabelA INER JOIN TABLE B ON xxxx WHERE A.USERNAME IN (SELECT USERNAME FROM TABLEB WHERE KEYWORD LIKE '%XX%') order by xxxxxx
select a.id from tableA where a.username in (select SELECT USERNAME FROM TABLEB WHERE XXXX and KEYWORD LIKE '%XX%') order by xxxxxx
select a.id from (tableA INNER JOIN tableB where like xx) order by last_update
效率上都没有明显改善,还有什么办法呢?
另外还请问,NVCHAR字段超过900个字节就无法建立索引,改为TEXT后只能建立全文索引但执行效率没有明显改变
那么大的字段(长度超过5000个字节)各位是怎么执行LIKE查询的呢?
类似与这样的结构:
select a.id from
(selece a.id,a.username,a.last_update from tableA (nolock)) a
inner join (select b.username,keyword from tableB b(nolock) where XXXXX) b on a.username=b.username
inner join (select b.username,keyword from tableC c (nolock)where XXXXX) c on a.username=c.username
where (b.keyword like '%xx%' or c.keyword like '%xx%')
order by a.last_update
完整的查询根本动不了
分开单独查询INNER语句和单独查询LIKE语句,分别需要20秒和15秒,请问从SQL SERVER分析角度来讲,这个SQL用什么样的结构会查询更快呢?(理论上的就可以)
我尝试过这样的结构:
select a.id from tabelA INER JOIN TABLE B ON xxxx WHERE A.USERNAME IN (SELECT USERNAME FROM TABLEB WHERE KEYWORD LIKE '%XX%') order by xxxxxx
select a.id from tableA where a.username in (select SELECT USERNAME FROM TABLEB WHERE XXXX and KEYWORD LIKE '%XX%') order by xxxxxx
select a.id from (tableA INNER JOIN tableB where like xx) order by last_update
效率上都没有明显改善,还有什么办法呢?
另外还请问,NVCHAR字段超过900个字节就无法建立索引,改为TEXT后只能建立全文索引但执行效率没有明显改变
那么大的字段(长度超过5000个字节)各位是怎么执行LIKE查询的呢?
...全文
相关推荐
Mysql百万级以上查询优化总结
Mysql百万级以上查询优化总结,,对mysql表优化、索引优化
MySQL百万级数据分页查询优化方案
在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦。
数据库SQL优化大总结 百万级数据库优化方案
百万级数据库优化方案
处理百万级以上的数据查询提高效率的办法
编写sql语句时可以看看,提高执行效率和sql优化
MySQL百万级数据量分页查询方法及其优化建议
主要介绍了MySQL百万级数据量分页查询方法及其优化建议,帮助大家更好的处理MySQL数据库,感兴趣的朋友可以了解下


应用实例
