2007-7-3 16:53
卧床睡觉
请教高手一个SQL调优的问题
SQL> desc SRT_TMP_QUIZ_ANSWER_INFO
Name Type Nullable Default Comments
------------------- ------------ -------- ------- --------
SUBJECTIVE_TEST_ID FLOAT
SUBJECTIVE_PAPER_ID FLOAT
QUIZ_NO NUMBER(15) Y
QUIZ_ID NUMBER(15)
EXTERNAL_QUIZ_COUNT FLOAT
EXTERNAL_QUIZ_MARK FLOAT
QUESTION_DIFFICULTY NUMBER(15,2) Y
QUESTION_DEGREE NUMBER(15) Y
QUESTION_ANSWER VARCHAR2(64) Y
STUDENT_ID NUMBER(15)
STUDENT_ANSWER VARCHAR2(10) Y
STUDENT_NAME VARCHAR2(32)
STUDENT_NUMBER VARCHAR2(32)
CLASS_ID NUMBER(15) Y
CLASS_GRADE NUMBER(15) Y
CLASS_ORG NUMBER(15) Y
CLASS_DISTRICT NUMBER(15) Y
GOT_MARK FLOAT
SQL> desc S_SUBJECTIVE_TEST_MARK
Name Type Nullable Default Comments
-------------------------- ----------- -------- ------- ------------
STUDENT_ID NUMBER 学生id
SUBJECTIVE_TEST_ID NUMBER 主观题考试id
SUBJECTIVE_PAPER_ID NUMBER 主观题试卷id
SUBJECTIVE_QUIZ_TOTAL_MARK FLOAT 主观题总得分
EXTERNAL_QUIZ_TOTAL_MARK FLOAT 客观题总得分
FLAG VARCHAR2(2)
SQL> desc S_SUBJECTIVE_TEST
Name Type Nullable Default Comments
------------------ ----------- -------- ------- --------
SUBJECTIVE_TEST_ID INTEGER
FLAG VARCHAR2(6) 'I'
现在想通过这三张表生成一张新的表a,是通过三个表的select生成
SELECT
T1.SUBJECTIVE_TEST_ID ,
T1.SUBJECTIVE_PAPER_ID ,
T1.CLASS_DISTRICT ,
T2.STUDENT_ID ,
T2.SUBJECTIVE_QUIZ_TOTAL_MARK +T2.EXTERNAL_QUIZ_TOTAL_MARK AS PAPER_MARK ,
T1.QUIZ_ID ,
T1.QUIZ_NO ,
T1.GOT_MARK *T1.EXTERNAL_QUIZ_COUNT /T1.EXTERNAL_QUIZ_MARK AS MARK_RATE
FROM
((SRT_TMP_QUIZ_ANSWER_INFO T1 INNER JOIN S_SUBJECTIVE_TEST_MARK T2
ON
T1.SUBJECTIVE_TEST_ID = T2.SUBJECTIVE_TEST_ID AND
T1.SUBJECTIVE_PAPER_ID = T2.SUBJECTIVE_PAPER_ID AND
T1.STUDENT_ID = T2.STUDENT_ID ) INNER JOIN S_SUBJECTIVE_TEST T3
ON
T1.SUBJECTIVE_TEST_ID = T3.SUBJECTIVE_TEST_ID )
WHERE
T3.FLAG = 'U' OR T3.FLAG = 'I'
因为生成的a表,大概会有几百万的数据,可否调优一下这条select语句,生成速度加快一些。
谢谢!!!