根据下表Employee(
E# VARCHAR(10), /* Employee number*/
Position VARCHAR(30), /* Position occupied*/
Department VARCHAR(30), /* Department*/
Name VARCHAR(40), /* Name*/
Salary NUMBER(8,2), /*Salary*/
Supervisor VARCHAR(10) /* Supervisor’s number*/
) PRIMARY KEY (E#);
Course(
Ctitle VARCHAR(50), /* Course title */
Institution VARCHAR(100), /* Institution offering a course */
Price NUMBER(12,2), /* Course price*/
CLength NUMBER(2), /* Course length (days) */
) PRIMARY KEY (Ctitle, Institution ) ;
CourseAttempted(
E# VARCHAR(10) , /* Staff number */
Ctitle VARCHAR(50), /* Course title */
Institution VARCHAR(100), /* Institution name */
Completed CHAR(1), /* Either completed or not */
CompDate DATE, /* Completion date */
Grade NUMBER(3) /* Grade obtained */
) PRIMARY KEY (E#, Ctitle, Institution );如何根据以下sql语句创建索引,以下的sql题目是独立的
(1) SELECT Name, Position, Department
FROM EMPLOYEE
WHERE E#=’123456’;
(2) SELECT SUM(Salary)
FROM EMPLOYEE
WHERE Department=’SALES’;
(3) SELECT Ctitle, Price, CLength
FROM Course
WHERE Institution=’UOW’;
(4) SELECT COUNT(*)
FROM CourseAttempted
WHERE E#=’123456’ AND Completed=’Y’;
(5) SELECT CA.E#, SUM(Price)
FROM CourseAttempted CA JOIN Course C
ON CA.Ctitle=C.Ctitle AND CA.Institution=C.Institution
GROUP BY E#;

解决方案 »

  1.   

    这3个表关系挺简单的,但是象你这样创建的结构很是不爽。
    尤其是3表(CourseAttempted)。2表(Course)也不怎么样。应该添加标识主键字段更好。因为复合主键会有生成一套复合索引,复合索引的应用完全依赖前导列,那么极有可能默认的复合索引不能得到有效的应用。而且这样建表复杂了主外键关系查询,建议修改表,然后主外键对应建索引。
      

  2.   

    对表EMPLOYEE的E#和Department建立索引
    create index idx_EMPLOYEE on EMPLOYEE(E#,Department)对表CourseAttempted也建立同样的索引
    ......
      

  3.   

    1,不用建索引,因为主键自动建聚集索引
    2,EMPLOYEE 表上对Department建非聚集索引
    3,Course 表上对Institution上建非聚集索引(前导有效性)
    4,CourseAttempted 表上对Completed建非聚集索引,E#已自动建了聚集索引
    5,CourseAttempted不用建(自动建了复合聚集索引)
    Course不用建(自动建了复合聚集索引)
      

  4.   

    5,CourseAttempted对 Ctitle,Institution分别建非聚集索引 
    Course不用建(自动建了复合聚集索引)
      

  5.   

    第5个CourseAttempted对 Ctitle,Institution分别建非聚集索引 
    为什么???
      

  6.   

    先join后group join中都没有复合索引的第一个,所以都无效
      

  7.   

    楼主,即使你建了索引也不一定有效。
    建议看一下执行计划,来调整索引的创建或SQL写法 Ctitle,Institution作为关联的字段当然要建索引了