我先给一张表做例子:
  姓名      购买的物品     价格     ..........
  张三      衣服           100
  张三      水果           10
  张三      巧克力          20
  李四      衣服            200
  李四      家具            1000
  李四      晚饭            15
  李四      夜宵             20
  ........1:这张表不止这3个字段,当然其他字段没有什么重要性
2:姓名会重复,因为数据库主键不是这三个字段
3:购买物品不重复,这其实不用考虑,数据录入的时候会做安排
4:不同姓名的人购买的物品数量可能不一样,所以记录数量不一样。例如张三  3件    李四   4件
5:这个数据库很庞大,数量很多,姓名可能上万,甚至百万。再加上每个姓名可以多条记录,所以记录更多,查询的时候要考虑数据库的承受能力,尽可能简单,优化数据库!我的目的: “张三”  购买  “衣服”  100;“水果”  10;“巧克力”  20  
           “李四”  购买  “衣服”  200;“家具”  1000;“晚饭”  15;“夜宵”  20
大量数据都可以这样输出。
求高手解答。主要是数据库数据量很大,优化数据库操作。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【hai2feng3】截止到2008-07-22 17:32:25的历史汇总数据(不包括此帖):
    发帖的总数量:18                       发帖的总分数:440                      每贴平均分数:24                       
    回帖的总数量:20                       得分贴总数量:5                        回帖的得分率:25%                      
    结贴的总数量:18                       结贴的总分数:440                      
    无满意结贴数:4                        无满意结贴分:80                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:22.22 %               无满意结分率:18.18 %                  
    敬礼!
      

  2.   

    select语句按照 “姓名”排序 都选择出来以后,结果集是数组;
    然后对数组加工,
    这样可能会快点!如:[张三][a][10][张三][b][100][李四][a][10][李四][c][50][............]
      

  3.   

    查询速度过慢,主要原因应该是数据库表设计不合理造成的.解决办法,有两种,一种是优化查询,另一种是修改表结构.优化查询,可能效果不佳.建议,除了主键以外,可以为姓名和物品这两个字段另外建立索引.这样会使查询性能得到提升,但大批量导入数据可能会缓慢.修改表结构,也可以向两个方面下功夫,一方面是字段,另一方面是数据的内容.字段上下功夫,是指,像姓名,物品这样的字段,类型都是字符串的,这样在查询的过程中,一条记录会比较每一个字符.可以另外建一张用户的表(用户名与用户id唯一对应),然后,本表不存放用户的姓名,而存放用户的id.这样,在查询时比较的是数字,而不是每个字符组成的字符串了.
    还有,产品也应该建一张表(产品id,产品名称,单价),我们知道,同一产品它的单价是唯一确定的,所以,这个产品单价会产生数据冗余,若是销售价格,可以保留.数据内容上下功夫,是指,可以把一张表按照数据的内容拆分成几张表.但是这样做的话,可能对其他的查询造成影响.
    比如,我们可以按照姓名的字母表顺序,把原来的表拆成32张表,这样,姓张的,姓郑的就会分在一张表里,但是姓李的就会分在另一张表里了.
    由于表的长度减少了,所以,每次查询,所比较的次数也就会减少,从而达到优化查询的目的.但是,如果想要查询某个产品都有哪几个人来购买的话,就比较麻烦了.
    当然,拆分表的方法,除了字母表顺序以外,还有取HashCode值的方法也可以参考.根据楼主的意思,还是建索引吧.
      

  4.   

    只能用函数处理,然后象分组group by  姓名函数:输入参数(姓名)
    输出值:购买的物品+价格
      

  5.   

    象这样的问题非常简单,谈不上挑战,sql server 很多人都可以处理!\\\