表一
栏目名称 消息ID 其他字段
COLUMN_NAME MSG_ID
名称1 1
名称1 2
………… …………
名称2 3
名称2 4
………… ………… 这个表主要由于查询在同一个栏目中有多少个消息ID用表二
消息ID 阅读总数 用户
MSG_ID MSG_COUNT USER_NO
1 100 1
1 100 2
2 100 1
2 100 2
………… ………… …………
………… ………… …………这个表主要记录对于同一消息,每个不同的用户阅读的次数
这个表的数据量非常大。表三
消息ID 发送总数
MSG_ID MSG_PUSH
1 1000
1 1000
2 1000
2 1000
………… …………
………… …………这个表主要用于查询对于同一消息ID,发送给多少个用户现在,我需要查询,每一个栏目下的所有消息的阅读总数、发送总数的集合。
即:
SELECT 表一. COLUMN_NAME,SUM(表二. MSG_COUNT),SUM(表三. MSG_PUSH)
并且可以对查询出的三个字段进行排序查询操作。如果简单的连接和子查询,会产生笛卡儿积,不知该如何才能优化处理。
栏目名称 消息ID 其他字段
COLUMN_NAME MSG_ID
名称1 1
名称1 2
………… …………
名称2 3
名称2 4
………… ………… 这个表主要由于查询在同一个栏目中有多少个消息ID用表二
消息ID 阅读总数 用户
MSG_ID MSG_COUNT USER_NO
1 100 1
1 100 2
2 100 1
2 100 2
………… ………… …………
………… ………… …………这个表主要记录对于同一消息,每个不同的用户阅读的次数
这个表的数据量非常大。表三
消息ID 发送总数
MSG_ID MSG_PUSH
1 1000
1 1000
2 1000
2 1000
………… …………
………… …………这个表主要用于查询对于同一消息ID,发送给多少个用户现在,我需要查询,每一个栏目下的所有消息的阅读总数、发送总数的集合。
即:
SELECT 表一. COLUMN_NAME,SUM(表二. MSG_COUNT),SUM(表三. MSG_PUSH)
并且可以对查询出的三个字段进行排序查询操作。如果简单的连接和子查询,会产生笛卡儿积,不知该如何才能优化处理。
FROM
(
select 表二.MSG_ID,SUM(表二.MSG_COUNT) MSG_COUNT,SUM(表三.MSG_PUSH) MSG_PUSH
from 表二,表三
where 表二.MSG_ID=表三.MSG_ID
) A,表一
where 表一.MSG_ID=A.MSG_ID
/