来看看这个sql语句如何优化?

sunhq 2003-11-10 11:10:01
两个表结构如下:
问题表 question:
id number(10) id从小到大排列,主键索引
userid number(10)
question varcher2(2000)

学生表 user:
userid number(10) 唯一,主键索引
username varchar2(20)

其中两个表的userid相关联,question 4万条记录,user 2万条记录

我列表时选出最后100条记录
现在问题是:我用 select * from (select ID from question order by ID desc) where rownum <= 100 很快很快,几乎没时间

但我想将姓名列出来时 select * from (select ID,username from question,user where question.userid=user.userid order by ID desc) where rownum <= 100 却很慢,要3秒钟以上,这种情况该怎么优化啊?谢谢
...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2003-11-10
  • 打赏
  • 举报
回复
没有使用上索引,对两个表的userid都建立好索引。
bzszp 2003-11-10
  • 打赏
  • 举报
回复
语句写得没有问题
sunhq 2003-11-10
  • 打赏
  • 举报
回复
呵呵,不要想当然的说啊,你把你说的sql语句在sql plus上执行一下就知道了,我不去执行都知道绝对不行!
bzszp 2003-11-10
  • 打赏
  • 举报
回复
question.userid=user.userid
这两个字段创建索引
wonder01 2003-11-10
  • 打赏
  • 举报
回复
为什么不直接这样写:
select ID,username from question,user where question.userid=user.userid order by ID desc where rownum <= 100;
lifei88 2003-11-10
  • 打赏
  • 举报
回复
這個SQL可以執行嗎?

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧