解決模糊查詢速度慢問題(ORACLE)

     一個困擾我良久的問題,在今天早上8:41分時基本解決。
     數據庫的數據量非常龐大,查詢速度極慢,建立索引後“=”搜索速度問題解決,但是在搜索的sql語句中大部分是用like,可是like '%XXX%'是不使用索引的,而like 'XXX%'則經過索引,求教曾經的老師、高級程序員也無用,在網站上搜索、求助,最終鎖定兩種辦法:1.全文索引。2.搜索引擎。 但據說全文索引的速度也不盡人意,對GBK的支持也有些問題,暫且研究搜索引擎,但發現搜索引擎不是一時半刻可以研究透徹的東西,只得轉向全文索引,下面是建立全文索引的方法:
     (在某個表上創建文本索引之前,如果該表上沒有主鍵,必須爲該表創建一個主鍵)
create index 文本索引名
       on 表名(要建文本索引的表字段)
indextype is ctxsys.context;

在創建文本索引用時比較長,要耐心等待...
創建完成後查詢測試:select * from table where CONTAINS(USERNAME,'可可')>0
     速度果然大幅提升,心想多天來的問題終於得到解決。但沒想到,在搜索結果較多的時候.Count累加的速度慢了下來,索引也全部建立,解決辦法至今沒有發現,昨晚躺在牀上翻來覆去,想到很多像論壇的搜索中都限制了搜索的關鍵字個數,這樣可以有效的控制查詢結果的數量,可以限制搜索時輸入的關鍵字最少不得少於四個漢字。但轉眼一想不可行,因爲庫中數據很有可能只有兩個字、三個字的名稱,這樣會造成搜索結果不可靠...
     今天早上一大早就來到公司,打開昨天在網上求助的帖子,回答人確實不少,提出了各種各樣的方法,可是我都曾嘗試過,都是行不通的,也許這個特殊項目的要求比較特別。靜下心仔細想想,我在See頁面需要的查詢其實大體可分爲兩種,小範圍搜索和大範圍搜索,在以前的小範圍搜索中速度是合格的,但是最近加入大範圍搜索,則出現以下問題,但是加入全文索引後,大範圍的速度大幅度提高了,而小範圍的count卻出奇的慢。分析完成,很明顯,在小範圍搜索的時候用普搜(同時可限制不得只輸入一個字),而大範圍的時候用全文索引進行搜索。立即按照此方案進行修改,終於...我希望的效果基本出現了。(但是大範圍搜索時,速度較小範圍略慢,但應無大礙) 心情大爽!本一度以爲要放棄此問題的.但最終尋得了解決辦法..雖然沒有《越獄》那樣驚險刺激,但解決問題後的心情也的確夠勁。
     接下來還有一個個的小問題,解決它們只是時間問題了...
發佈了14 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章