我现在要对会员的教育经历进行存储和检索,为了存储和读取效率,我开始的打算是这样的:将会员所有的教育经历,包括学校、专业、时间等,放到一个<table></table>中,存入数据库的一个字段。
这样只用控制<table>的CSS就可以了,读取和存储都很方便。
但是朋友说,这样就没法检索了,或者说检索的效率非常低。建议我还是按原来的把每条教育经历逐条放到数据库保存。我的问题:
1)我的办法对检索性能的影响很大吗,这种数据是否不适合建立索引?
2)逐条存放并索引后,检索应该是很快,但是读取和存储的时候效率不好,有没有比较好的方案?

解决方案 »

  1.   

    >>>> tim_spac 赞同:在特定的需求下,是要考虑很多东西1)数据增长速度比较快,每天近千条
    2)数据读取的频度最高,修改的频度为其1/20左右;
    3)之所以想存储到一个字段,是因为对教育记录的修改也是特定的教育记录的修改,更多地使用了客户端修改,统一提交的方式。
    前台使用javascript对记录进行增加、修改、删除(临时存储在一个<table>中),提交时一次提交了所有的修改。这样,如果是逐条存储的话,就要将该用户的所有教育记录删除,再写入所有的新记录,哪怕用户只改了一条记录。
    因为修改发生的客户端,逐条对比修改已经变得不可行。所以用户每次修改,只能删除所有以前的,写入所有现在的。
      

  2.   

    建议直接用数据库,而不是你的这种方法。create table educationRecords (
     personID  ... reference personMasterData,
     学校
     专业
     时间
     etc
    )
      

  3.   

    如果信息检索的需求是后端的应用,不需要很快速地响应,那就这样吧,加个全文索引(全文索引我没用过不好说)。
    如果信息检索的需求也比较明确,建一个结构化的关系型辅助表,当教育记录被修改时,对该记录进行内容解析后填充到新表中,检索的时候用这个新表的数据,前端应用还用你的"<table>.."信息
      

  4.   

    >>>>>  tim_spac 如果信息检索的需求是后端的应用,不需要很快速地响应,那就这样吧,加个全文索引(全文索引我没用过不好说)。 
    如果信息检索的需求也比较明确,建一个结构化的关系型辅助表,当教育记录被修改时,对该记录进行内容解析后填充到新表中,检索的时候用这个新表的数据,前端应用还用你的" <table> .."信息
    你说的这个办法,是我现在正在考虑的。就是把呈现的和搜索的分表存储,呈现的数据仍放在一个字段中,搜索的数据放在一个从表中建索引。
    这样可以比较好地解决读取和搜索的问题,就是数据存储了两次
      

  5.   

    to 楼主:
    教育记录的修改,更多地使用了客户端修改,统一提交的方式。 
    前台使用javascript对记录进行增加、修改、删除(临时存储在一个 <table> 中),提交时一次提交了所有的修改。 这样,如果是逐条存储的话,就要将该用户的所有教育记录删除,再写入所有的新记录,哪怕用户只改了一条记录。 
    因为修改发生的客户端,逐条对比修改已经变得不可行。所以用户每次修改,只能删除所有以前的,写入所有现在的。---为什么要都删除呢!
    修改就用修改的存储过程啊!update不型吗!
      

  6.   

    >> qiuming0306 如果修改的话,你需要逐条检查:该记录是否已经存在于数据库,是否已经被修改过