问题描述:一个文件中保存有许多字符串(最多5万个),现在需要将这些字符串放到数据库中,现在的方案是建立一张表,字段为整型的id和字符类型的name,其中name就是需插入的字符串,而id为唯一标识这些字符串的数字,这样就可以基于id建立索引,提高存储和查询效率。
但由于文件中保存的字符串总是在变化,程序启动时扫描该文件,如果有新的字符串产生则插入。
请教以下问题:
1,唯一标识字符串的id应该如何确立,我想用hash映射,是否可以?是否有更适合的方案?
2,扫描表以知道该字符串是否插入的算法应该如何设计才能保证最优?

解决方案 »

  1.   

    不知道你这里的新字符串的产生是追加到文件末尾呢还是可能任意位置插入又或者是修改其中的某个字符串?
    如果是最后追加,那么id用oracle的sequence生成再好不过。
    另外你的name如果没有一定的规则的话,你只能在这个列上建索引,然后利用 name=新串来查,应该没有最优算法了。
    如果name字段是英文的,那么可以考虑按首字母,中文的可能需要拼音汉字对照表,再加一个字段来减少查询范围。不过你才5万条,建了索引再用=也很快的。
      

  2.   

    谢谢你的回复!
    这个文件是程序产生的,因此每次里面的字符串顺序与大小可能都不一样~~
    除了sequence还有别的方法吗?老师还是想在程序里产生id然后插入