none
求助一个查询效率问题。 RRS feed

  • 问题

  • 表A(aid,aName,...) aid为主键

    表B(bid, aid, bName,bImageContent,...) bid为主键,A.aid为B.aid的外键,并建了索引,bImageContent为IMAGE型数据

    数据量在100W以上,且表B从不用执行UPDATE操作。

    经常做的操作

    1.从表A中查询记录:

     Select aid, aName, ...  from A where ...

    2.当用户选中A中一行记录后,在B中查询其对应数据:

     Select bid, bName from B where aid = 'xxx' (不选择IMAGE字段)

    3.当选中一个B中记录并需要下载IMAGE文件时:

    Select BImageContent from B where bid = 'xxx'

    我现在想改变一下方式:在表A中加入字段bids,存储对应的bid,以分号相隔

    这样我第1步可以从A.bids中得到所有bid,直接用bid进行第二步的查询。

    请问:

    1.第二种方式提高效率是否明显

    2.如果第二种方式,我需要对现有的数据库进行列转行的操作,请问如何用PIVOT实现将多行的某个字段数据以分号连接

    谢谢。

    2010年7月26日 7:50

答案

  • 不需要这么改变

    直接用连接表完成

    select a.aid,a.anme,b.bid,b.bname from a,b where b.aid=a.aid and a.aid='xxx'

    然后在返回结果中的bid去查image字段

    ps,对a,b表的id字段建立索引

     


    family as water
    • 已标记为答案 Jeuo 2010年7月26日 10:31
    2010年7月26日 8:58