公司有一張商品圖片表 : image_id , image_url
后來發現相同 image_url 的資料太多了,所以想對 image_url 建個索引,如果新商品的 image_url 在庫里已存在了,就不再添加了
image_url 欄位為 varchar2(200char) 平均長度是100個英文字符
1:請問可以直接在該欄位建立索引嗎? 第一次給這么長的字串欄位建立索引,心里沒底
2:有沒有其他的方法 比如取個短摘要,然后對摘要建索引 ?
uj5u.com熱心網友回復:
1、創建索引并不能消除重復值,它的目的是為了提高查詢速度,但是并不是說索引越多速度就越快,特別是對于被索引欄位經常變化的表(插入、洗掉記錄都會導致被索引欄位變化,修改被索引欄位的值也會)會引起oracle重新計算索引,增加服務器的資源消耗。2、要防止重復欄位要將該欄位配置為唯一性欄位。
3、公網上能查到很多計算字串摘要的演算法,即然是摘要就存在不同的字串有相同的摘要的可能,盡管概率比較小,也是一種解決辦法,同時你還要考慮摘要值的長度。
4、不知道你的圖片是存放在哪里,如果是在自己的服務器上固定的目錄中,那么這個URL的前綴就沒有必要在資料庫中存放,只要存放圖片檔案的檔案名即可,這樣這個欄位就小。
uj5u.com熱心網友回復:
可能我表達的不是很好,問題很簡單即可不可以直接對一個平均長度為100字符的varchar2欄位建立索引
uj5u.com熱心網友回復:
如果光說可不可以,當然是可以。
但是也許你不應該用這個url本身判定它存不存在吧?可能還需要一張url表,用它的主鍵判斷存不存在。
uj5u.com熱心網友回復:
索引和欄位的長度沒有關系。但是根據你的描述,應該先把現有資料去重后,創建唯一索引。
uj5u.com熱心網友回復:
是有關系的
uj5u.com熱心網友回復:
直接建索引就好,索引列長度限制是6398
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/31364.html
標籤:開發
上一篇:學習前端的程序中遇到的問題
