hc学习平台

 找回密码
 立即注册
搜索
热搜: 活动 交友 javakc
 › 学习交流 › Oracle › 用一句sql查询出每个用户最近一次登录的记录(每个用户只显示一条最近登录的记录),并说明该表如何建立索引效果最佳
查看: 2024|回复: 3
打印 上一主题 下一主题

用一句sql查询出每个用户最近一次登录的记录(每个用户只显示一条最近登录的记录),并说明该表如何建立索引效果最佳

[复制链接]

2249

主题

0

帖子

0

博客

admin

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

跳转到指定楼层
楼主
发表于2015-09-08 17:07:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 ID Name  EmailAddress  LastLogon 
 100  test4   Test4@yahoo.cn  2007-11-25 16:31
 13  test1  Test1@yahoo.cn  2007-3-22 16:27
 19  test1  Test1@yahoo.cn  2007-10-25 14:13
 42  test1  Test1@yahoo.cn  2007-11-20 14:20
 45  test2  Test2@yahoo.cn  2007-4-25 14:17
 49  test2  Test2@yahoo.cn  2007-5-25 14:22
WR

0

主题

1674

帖子

0

博客

WR

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-08 13:20:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

给name建立索引

create index 索引名 on 表名(列名);

create index tbl on name

沙发
发表于2016-09-08 16:53:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
create index index1 on A(name,lastlogon);

0

主题

1451

帖子

0

博客

gaoye

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-08 14:31:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select *

from bi


给ID建立索引最佳,因为ID是唯一的,方便查询数据

0

主题

1510

帖子

0

博客

zhangjialong

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-09 15:39:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
-- Create table
create table D
(
  ID           VARCHAR2(20),
  NAME         VARCHAR2(10),
  EMAILADDRESS VARCHAR2(30),
  LASTLOGON    DATE
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited

  );


--创建或替换索引
create or replace view myview as
select d.name,d.lastlogon from d


--基于索引查询

select * from myview


0

主题

1450

帖子

0

博客

Sarbr

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-08 14:35:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在where子句或是连接条件上经常使用的列上建立索引,很少或从不引用的字段不建索引。

create index SNAME on Name;

0

主题

1576

帖子

0

博客

liufangyuan

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-09 13:05:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

--创建或替换索引
create or replace view myview as
select d.name,d.lastlogon from d


--基于索引查询

select * from myview


完整代码:

-- Create table
create table D
(
  ID           VARCHAR2(20),
  NAME         VARCHAR2(10),
  EMAILADDRESS VARCHAR2(30),
  LASTLOGON    DATE
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

--创建或替换索引
create or replace view myview as
select d.name,d.lastlogon from d


--基于索引查询

select * from myview


0

主题

1518

帖子

0

博客

Cracia

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-09 15:35:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select name, max(LastLogon) from db_user group by name;

该表最常用到的字段是id或name,所以索引应建在这两个字段上

0

主题

1721

帖子

0

博客

XIAOC

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-11 14:59:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为id字段设置检索,因为ID返回的数据不会很多

0

主题

1458

帖子

0

博客

梦紫菱0124

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-19 19:10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select *,max(LastLogon) from user group by ID ;

该表建立索引可以在分组以后的数据上建立索引

0

主题

752

帖子

0

博客

CDS 123

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-11-10 16:50:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select name,max(lastlogon) from 表名 group by name

使用索引原则:
1. 在大表上建立索引才有意义。
2. 在where子句或是连接条件上经常使用的列上建立索引,很少或从不引用的字段不建索引。
3. 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间.
4. 逻辑型的字段,如男或女(是或否)等,不建立索引。
5. 索引只在返回较少比例的数据时才比全表扫描有效,大多数情况下认为结果集很大,一般大于5%-15%就不使用索引查询。
6. != 将不使用索引, 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中.
7. ||是字符连接函数. 就象其他函数那样,停用了索引。
8. + 是数学函数. 就象其他数学函数那样,停用了索引。
9. like "%_" 百分号在前时,停用了索引。
10. 字符型字段为数字时在where条件里不添加引号时,停用了索引
11. 相同的索引列不能互相比较,这将会启用全表扫描。

0

主题

292

帖子

9

博客

tcz1m89613

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-12-05 11:06:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select *,max(LastLogon) from table group by Name;

0

主题

281

帖子

9

博客

love

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-06-23 11:23:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select max(datetime) from uesrlog group by u_id

0

主题

1932

帖子

0

博客

740317431

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-21 13:42:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select LastLogon from table

create index myindex on table (LastLogon)

0

主题

1902

帖子

0

博客

王之神判

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-22 12:27:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select name,max(lastlogon)

from table 

group by name


单列索引

zxx

0

主题

1135

帖子

0

博客

zxx

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-25 11:04:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select t2.id, t2.name, emailAddress, lastLogin
  from t_user2 t2, (select name, max(id) id from t_user2 group by name) t1
 where t2.id = t1.id

0

主题

445

帖子

0

博客

wangxiaoqing

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2018-09-18 20:25:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select lastlogon from users ;

select * from (

select rownum rd,e.*from users e

)ee



站点统计|举报|Archiver|手机版|小黑屋|Comsenz Inc.

GMT+8, , Processed in 0.195171 second(s), 9 queries .

Powered by javakc! X1.0

© 2004-2014 javakc

f1208.com 备案号:京ICP备14030918号-1

返回顶部