0

0

优化Oracle with全表扫描的问题

php中文网

php中文网

发布时间:2016-06-07 16:50:48

|

1389人浏览过

|

来源于php中文网

原创

用户表比较大,是一个有900w记录的分区表。查看执行计划,都符合预期,只是最后关联用户表的时候,使用了全表扫描,直接导致这个

今天开发接了一个很bt的需求。
 找一个人的所有好友,查询所有好友的所有作品,,然后按照时间倒序排列,取若干记录,
 然后关联作品评论表。
 
作品包括原唱表,翻唱表,伴奏表,视频表,博客表和照片表,
 不同的作品类型还要关联不同的专辑表,最后还要关联用户表..

--------------------------------------------------------------------------------

Linux-6-64下安装Oracle 12C笔记

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

尘月网络企业网站管理系统2010
尘月网络企业网站管理系统2010

本版升级功能:1、增加“系统参数设置”功能,可在线管理编辑全站数据库路径、备份路径,无须到程序代码下更改;2、改进后台管理员权限分配问题,严谨、完善、安全的根限分配细分到每个功能页面的列表查看权限、添加权限、编辑权限、删除权限都可以在线分配,确保系统在多用户管理下,安全稳定运行;3、更新优化数据库操作,在线备份、压缩、恢复数据库,管理登录日志;4、增加&am

下载

Debian 下 安装 Oracle 11g XE R2

--------------------------------------------------------------------------------
结果就是这个SQL很长...
 with
 t1 as (select to_userid from friend_list f where f.userid=411602438),
 t2 as (
  select 'mc' as t,rid,createtime
  from
  (
    select mc.rowid rid,mc.createtime from music_cover mc,t1 where mc.userid=t1.to_userid and mc.opus_stat >0 order by mc.createtime desc
  ) where rownum  union all
  select 'mo',rid,createtime
  from
  (
    select mo.rowid rid,mo.createtime  from music_original mo,t1 where mo.userid=t1.to_userid and mo.opus_stat >0 order by mo.createtime desc
  ) where rownum 
  union all
  select 'mv',rid,createtime
  from
  (
    select mv.rowid rid,mv.createtime  from music_video mv,t1 where mv.userid=t1.to_userid and mv.opus_stat >0 order by mv.createtime desc
  ) where rownum 
  union all
  select 'ma',rid,createtime
  from
  (
    select ma.rowid rid,ma.createtime from music_accompany ma,t1 where ma.userid=t1.to_userid and ma.opus_stat >0 order by ma.createtime desc
  ) where rownum 
  union all
  select 'bl',rid,createtime
  from
  (
    select bl.rowid rid,bl.createtime  from blog_list bl,t1 where bl.userid=t1.to_userid and bl.opus_stat >0 order by bl.createtime desc
  ) where rownum 
  union all
  select 'pl',rid,createtime
  from
  (
    select pl.rowid rid,pl.createtime  from photo_list pl,t1 where pl.userid=t1.to_userid and pl.opus_stat >0 order by pl.createtime desc
  ) where rownum ),
 t3 as
 (
  select * from
  (
    select * from t2 order by createtime desc
  )
  where rownum ),
 t4 as
 (
 select
  t3.t,
  decode(t3.t,
 'mc',2,
 'mo',2,
 'mv',2,
 'ma',2,
 'pl',4,
 'bl',5
 ) type_code,
  mc.userid||mo.userid||mv.userid||ma.userid||bl.userid||pl.userid userid,
  mc.file_url||mo.file_url||mv.file_url||ma.file_url||bl.file_url||pl.file_url file_url,
  mc.opus_Name||mo.opus_Name||mv.opus_name||ma.opus_name||bl.opus_name||pl.opus_name opus_name,
  mc.opus_id||mo.opus_id||mv.opus_id||ma.opus_id||bl.opus_id||pl.opus_id opus_id,
  mc.createtime||mo.createtime||mv.createtime||ma.createtime||bl.createtime||pl.createtime createtime,
  mv.opus_desc||mo.opus_desc||mc.opus_desc||ma.opus_desc||bl.opus_desc||pl.opus_desc opus_desc,
  mv.album_id||mo.album_id||mc.album_id||ma.album_id||bl.album_id||pl.album_id album_id,
  mv.visit_num||mo.visit_num||mc.visit_num||ma.visit_num||bl.visit_num||pl.visit_num visit_num
 from t3
 left join music_cover mc on(t3.rid=mc.rowid)
 left join music_original mo on(t3.rid=mo.rowid)
 left join music_video mv on(t3.rid=mv.rowid)
 left join music_accompany ma on(t3.rid=ma.rowid)
 left join blog_list bl on(t3.rid=bl.rowid)
 left join photo_list pl on(t3.rid=pl.rowid)
 )
 select /*+ ordered use_nl(t4,base) */
 base.nickname,
 decode(t4.type_code,
 2,(select al.album_name from music_album al where al.album_id=t4.album_id),
 4,(select al.album_name from photo_album al where al.album_id=t4.album_id),
 5,(select al.album_name from blog_album al where al.album_id=t4.album_id)
 ) album_name,
 (select count(*) from user_comment com where com.typeid=t4.type_code and t4.opus_id=com.to_id and status=1) commentTotal,
 t4.*
 from t4,mvbox_user.user_baseinfo base where base.userid=t4.userid;
 

创建索引消除排序
 create index inx_music_cover on music_cover(userid,opus_stat,operTime);
 create index inx_music_original on music_original(userid,opus_stat,operTime);
 create index inx_music_video on music_video(userid,opus_stat,operTime);
 create index inx_music_accompany on music_accompany(userid,opus_stat,operTime);
 create index inx_blog_list on blog_list(userid,opus_stat,operTime);
 create index inx_photo_list on photo_list(userid,opus_stat,operTime);
 create index inx_user_comment on user_comment(to_id,typeid,status);
 
用户表比较大,是一个有900w记录的分区表。查看执行计划,都符合预期,只是最后关联用户表的时候,使用了全表扫描,直接导致这个SQL执行了20s左右。但是用户表的关联字段明明已经创建了索引。。

更多详情见请继续阅读下一页的精彩内容:

linux

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.7万人学习

Java 教程
Java 教程

共578课时 | 56.2万人学习

oracle知识库
oracle知识库

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号