关于查询优化分析与设计的问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 21:41:31
创建了以下表
create table student(
sno int,
sname char(20),
sex int,
age int,
dept char(8));

create table course(
cno int,
cname char(20),
credit int);

create table sc(
sno int,
cno int,
grade int);
表student有10000条记录,表course有100条记录,表sc有100000条记,查询:查看某个学生的某一门课的成绩
select *
from sc
where sno =? and cno =?
比较如下三种数据扫描方法的效率:(比较执行时间)
1)表扫描
2)在sc(sno,cno)上建立聚簇索引
3)在sc(sno,cno)上建立非聚簇索引
怎么做啊,那位高手可以帮下我?万分感谢!
急用,那位高手帮下忙,谢谢!

1、首先建表
create table student(
sno int,
sname char(20),
sex int,
age int,
dept char(8));

create table course(
cno int,
cname char(20),
credit int);

create table sc(
sno int,
cno int,
grade int);
2、插入数据
DECLARE
V_NUM NUMBER(10);
BEGIN
V_NUM := 0;
WHILE V_NUM < 10000 LOOP
INSERT INTO STUDENT (SNO) VALUES (V_NUM);
V_NUM := V_NUM + 1;
END LOOP;
END;

DECLARE
V_NUM NUMBER(10);
BEGIN
V_NUM := 0;
WHILE V_NUM < 100 LOOP
INSERT INTO course (cNO) VALUES (V_NUM);
V_NUM := V_NUM + 1;
END LOOP;
END;

DECLARE
V_NUM NUMBER(10);
BEGIN
V_NUM := 0;
WHILE V_NUM < 100000 LOOP
INSERT INTO SC (SNO,CNO,grade) VALUES (V_NUM,MOD(V_NUM,100),1000);
V_NUM := V_NUM + 1;
END LOOP;
END;
3、执行全表扫描
select *
from sc