感谢:感谢坛内热心群众以及坛内侠客
目的:将以下表的数据横向输出
现象:数据量较小时候无问题,数据量达到万条,很慢很慢,基本就算查不出数据了
问题:我的sql语句的条件,什么地方有不足的地方21表名: T_RESULT 备注:测试成绩表2,重新设计表结构, 测试成绩表1存储统计结果
海量数据说明:考虑一个城市建一个成绩表
序号 字段含义 字段名 类型(长度) 备注
1 学生身份证 STUDENT_PIN varchar(18) 关联学生基本资料表(主键)
3 项目的编号 PROJECT_CODE Varchar(4) 关联测试项目表的编号
4 项目的数据 PROJECT_DATA Numeric(7,2) 2位小数
5 项目的得分 PROJECT_SCORE Varchar(5)
项目得分的类型 VALUATION 1营养不良2较低体重3正常体重4超重5肥胖15表名:T_STUDENT 备注:学生基本资料表
海量数据说明:考虑一个城市建一个学生表,或者将学生表合并到成绩表中
序号 字段含义 字段名 类型(长度) 备注
1 身份证号 STUDENT_PIN Varchar(18) (主键)
2 学生名 STUDENT_NAME Varchar(20)
3 班级 CLASS_CODE Varchar(10) 关联班级表的编号
4 性别 SEX Varchar(1) 1:男2:女
5 民族 NATION_CODE Varchar(4)10表名: T_CLASS
序号 字段含义 字段名 类型(长度) 备注
1 编号 CLASS_CODE Varchar(10) (主键)
2 班级名 CLASS_NAME Varchar(20)
3 年级编号 GRADE_CODE Varchar(10) 关联年级表的编号9表名: T_GRADE
序号 字段含义 字段名 类型(长度) 备注
1 编号 GRADE_CODE Varchar(10) (主键)
2 年级名 GRADE_NAME Varchar(20)
3 年级缩写 GRADE_ABBR Varchar(2) 不重复
4 学校编号 SCHOOL_CODE Varchar(11) 关联学校表的编号11表名: T_ EXAMINATION 备注:年级测试项目考核表
序号 字段含义 字段名 类型(长度) 备注
性别 Sex Varchar(1) 1:男2:女
2 年级编号 GRADE_CODE Varchar(10) 关联年级表的年级缩写
3 测试项目编号 PROJECT_CODE Varchar(4) 关联测试项目表的编号
学校编号 SCHOOL_CODE VARCHAR(11) 关联学校表的编号
项目类别 PROJECTSORT_CODE VARCHAR(2) 关联项目类别编号18表名: T_PROJECTSORT 备注: 测试项目分类表
字段含义 字段名 类型(长度) 备注
编号 PROJECTSORT_CODE Varchar(2) (主键)
类别名 PROJECTSORT_NAME Varchar(20) 1:耐力2:柔韧3:灵巧16表名: T_NATION 备注:民族表
序号 字段含义 字段名 类型(长度) 备注
1 编号 NATION_CODE Varchar(4) (主键)
2 民族名 NATION_NAME Varchar(10)
SELECT * FROM
T_RESULT A,T_RESULT B,T_RESULT C,T_RESULT D,
T_STUDENT E,T_CLASS F,T_EXAMINATION G,
T_PROJECT H,T_PROJECT I,T_PROJECT K,T_PROJECT Q,
T_NATION O,T_GRADE PWHERE
E.SEX = '1'
AND E.STUDENT_PIN =A.STUDENT_PIN
AND H.PROJECT_CODE = A.PROJECT_CODE
AND E.STUDENT_PIN =B.STUDENT_PIN
AND I.PROJECT_CODE = B.PROJECT_CODE
AND E.STUDENT_PIN =C.STUDENT_PIN
AND K.PROJECT_CODE = C.PROJECT_CODE
AND E.STUDENT_PIN =D.STUDENT_PIN
AND Q.PROJECT_CODE = D.PROJECT_CODE
AND E.NATION_CODE=O.NATION_CODE
AND E.CLASS_CODE=F.CLASS_CODE
AND F.GRADE_CODE=P.GRADE_CODE
AND P.GRADE_CODE= + @GRADE_CODE
AND F.GRADE_CODE = G.GRADE_CODE AND G.PROJECT_CODE=H.PROJECT_CODE
---****
AND G.PROJECT_CODE=I.PROJECT_CODE
AND G.PROJECT_CODE=K.PROJECT_CODE
AND G.PROJECT_CODE=G.PROJECT_CODE
---****AND H.PROJECT_CODE= + @PROJECT_CODE1
AND I.PROJECT_CODE= + @PROJECT_CODE2
AND K.PROJECT_CODE= + @PROJECT_CODE3
AND Q.PROJECT_CODE= + @PROJECT_CODE4
目的:将以下表的数据横向输出
现象:数据量较小时候无问题,数据量达到万条,很慢很慢,基本就算查不出数据了
问题:我的sql语句的条件,什么地方有不足的地方21表名: T_RESULT 备注:测试成绩表2,重新设计表结构, 测试成绩表1存储统计结果
海量数据说明:考虑一个城市建一个成绩表
序号 字段含义 字段名 类型(长度) 备注
1 学生身份证 STUDENT_PIN varchar(18) 关联学生基本资料表(主键)
3 项目的编号 PROJECT_CODE Varchar(4) 关联测试项目表的编号
4 项目的数据 PROJECT_DATA Numeric(7,2) 2位小数
5 项目的得分 PROJECT_SCORE Varchar(5)
项目得分的类型 VALUATION 1营养不良2较低体重3正常体重4超重5肥胖15表名:T_STUDENT 备注:学生基本资料表
海量数据说明:考虑一个城市建一个学生表,或者将学生表合并到成绩表中
序号 字段含义 字段名 类型(长度) 备注
1 身份证号 STUDENT_PIN Varchar(18) (主键)
2 学生名 STUDENT_NAME Varchar(20)
3 班级 CLASS_CODE Varchar(10) 关联班级表的编号
4 性别 SEX Varchar(1) 1:男2:女
5 民族 NATION_CODE Varchar(4)10表名: T_CLASS
序号 字段含义 字段名 类型(长度) 备注
1 编号 CLASS_CODE Varchar(10) (主键)
2 班级名 CLASS_NAME Varchar(20)
3 年级编号 GRADE_CODE Varchar(10) 关联年级表的编号9表名: T_GRADE
序号 字段含义 字段名 类型(长度) 备注
1 编号 GRADE_CODE Varchar(10) (主键)
2 年级名 GRADE_NAME Varchar(20)
3 年级缩写 GRADE_ABBR Varchar(2) 不重复
4 学校编号 SCHOOL_CODE Varchar(11) 关联学校表的编号11表名: T_ EXAMINATION 备注:年级测试项目考核表
序号 字段含义 字段名 类型(长度) 备注
性别 Sex Varchar(1) 1:男2:女
2 年级编号 GRADE_CODE Varchar(10) 关联年级表的年级缩写
3 测试项目编号 PROJECT_CODE Varchar(4) 关联测试项目表的编号
学校编号 SCHOOL_CODE VARCHAR(11) 关联学校表的编号
项目类别 PROJECTSORT_CODE VARCHAR(2) 关联项目类别编号18表名: T_PROJECTSORT 备注: 测试项目分类表
字段含义 字段名 类型(长度) 备注
编号 PROJECTSORT_CODE Varchar(2) (主键)
类别名 PROJECTSORT_NAME Varchar(20) 1:耐力2:柔韧3:灵巧16表名: T_NATION 备注:民族表
序号 字段含义 字段名 类型(长度) 备注
1 编号 NATION_CODE Varchar(4) (主键)
2 民族名 NATION_NAME Varchar(10)
SELECT * FROM
T_RESULT A,T_RESULT B,T_RESULT C,T_RESULT D,
T_STUDENT E,T_CLASS F,T_EXAMINATION G,
T_PROJECT H,T_PROJECT I,T_PROJECT K,T_PROJECT Q,
T_NATION O,T_GRADE PWHERE
E.SEX = '1'
AND E.STUDENT_PIN =A.STUDENT_PIN
AND H.PROJECT_CODE = A.PROJECT_CODE
AND E.STUDENT_PIN =B.STUDENT_PIN
AND I.PROJECT_CODE = B.PROJECT_CODE
AND E.STUDENT_PIN =C.STUDENT_PIN
AND K.PROJECT_CODE = C.PROJECT_CODE
AND E.STUDENT_PIN =D.STUDENT_PIN
AND Q.PROJECT_CODE = D.PROJECT_CODE
AND E.NATION_CODE=O.NATION_CODE
AND E.CLASS_CODE=F.CLASS_CODE
AND F.GRADE_CODE=P.GRADE_CODE
AND P.GRADE_CODE= + @GRADE_CODE
AND F.GRADE_CODE = G.GRADE_CODE AND G.PROJECT_CODE=H.PROJECT_CODE
---****
AND G.PROJECT_CODE=I.PROJECT_CODE
AND G.PROJECT_CODE=K.PROJECT_CODE
AND G.PROJECT_CODE=G.PROJECT_CODE
---****AND H.PROJECT_CODE= + @PROJECT_CODE1
AND I.PROJECT_CODE= + @PROJECT_CODE2
AND K.PROJECT_CODE= + @PROJECT_CODE3
AND Q.PROJECT_CODE= + @PROJECT_CODE4
解决方案 »
- oracle 分区表 即查询的2个问题
- oracle大神们给个语句create text语句咯
- Oracle企业管理器没法用
- 关于orcale递归的问题
- 从Sql Server转入Oracle写的第一个存储过程,就遇上问题了,信心倍受打击,高人请指点下!!!谢谢了!
- 急急!初学oracle!!---求救大侠们--这个sqlserver行列转换函数在oracle中怎么写!!!!!!!!!
- EXEC SQL中编程怎么加in条件
- 求大神。。。此需求存储过程如何写!!!
- 哪位大虾知道如何在oracle8i和oracle9i之间用imp/exp导数据!我试了不行啊!!
- !!!!!高分求解SQL文. 欢迎大家讨论,来者有分.
- 请帮忙把SQL 触发器改成Oracle触发器--谢谢
- Oracle+.net 连接问题
select * from
( select *from t1,t2 where t1.c1=t2.c2 and other condition ...) as A,
( select *from t3,t4 where t3.c1=t4.c2 and other condition...) as B,
……
where A.c1=B.c2
……
如此处理,将各个表的联接放在子查询中,并第一时间过滤,减小最终检索集的规模
另外,主键外键建立索引 能做的 也只有这么多了。。