公司有一张商品图片表 : image_id , image_url后来发现相同 image_url 的数据太多了,所以想对 image_url 建个索引,如果新商品的 image_url 在库里已存在了,就不再添加了image_url 字段为 varchar2(200char) 平均长度是100个英文字符1:请问可以直接在该字段建立索引吗? 第一次给这么长的字符串字段建立索引,心里没底2:有没有其他的方法 比如取个短摘要,然后对摘要建索引 ?

解决方案 »

  1.   

    1、创建索引并不能消除重复值,它的目的是为了提高查询速度,但是并不是说索引越多速度就越快,特别是对于被索引字段经常变化的表(插入、删除记录都会导致被索引字段变化,修改被索引字段的值也会)会引起oracle重新计算索引,增加服务器的资源消耗。
    2、要防止重复字段要将该字段配置为唯一性字段。
    3、公网上能查到很多计算字符串摘要的算法,即然是摘要就存在不同的字符串有相同的摘要的可能,尽管概率比较小,也是一种解决办法,同时你还要考虑摘要值的长度。
    4、不知道你的图片是存放在哪里,如果是在自己的服务器上固定的目录中,那么这个URL的前缀就没有必要在数据库中存放,只要存放图片文件的文件名即可,这样这个字段就小。
      

  2.   

    可能我表达的不是很好,问题很简单即可不可以直接对一个平均长度为100字符的varchar2字段建立索引
      

  3.   


    如果光说可不可以,当然是可以。
    但是也许你不应该用这个url本身判定它存不存在吧?可能还需要一张url表,用它的主键判断存不存在。