考慮下面的數據庫表:有沒有更好的方法來使用SQL查找anagrams?
WORDS
alphagram....varchar(15)
word.........varchar(15) PK
length.......int
其中:
- 'alphagram' 是按字母順序排列一個詞的字母(如AEINNRTT是INTRANET的alphagram)
- 主鍵是'字',並且有字母和長度上的索引
我找到了一種方法來查找給定字符串的字母通過SQL。例如,要查找AEINNRTT的字謎這將工作:
select alphagram, word, definition
from words
where length = 8
and alphagram like '%A%'
and alphagram like '%E%'
and alphagram like '%I%'
and alphagram like '%NN%'
and alphagram like '%R%'
and alphagram like '%TT%'
,將返回(內部網)
如果1行,我想包括已知數量的通配符,例如,有多少字是與INTRANET +空白(通配符)我只需要改變'長度'字母總數+通配符數
eg
select alphagram, word, definition
from words
where length = 9
and alphagram like '%A%'
and alphagram like '%E%'
and alphagram like '%I%'
and alphagram like '%NN%'
and alphagram like '%R%'
and alphagram like '%TT%'
...將返回8行(娛樂,INSTANTER,整合體,內聯網,流動,嘮叨,RATTENING和瞬態)
我的問題是:是否有這樣做的更有效的方法僅通過SQL?
這在SQLServer中運行得非常快,但在SqlLite中非常慢。我意識到%xxx%的搜索速度並不快。
是否有一個原因,你只使用SQL而不是應用程序層? – JNK 2010-10-21 20:49:07
我試圖讓事情變得簡單,但我很可能必須這樣做。 – eponymous23 2010-10-21 20:52:12