我正在研究文字遊戲,爲此目的,我有一個數據庫表,其中包含約20000個英文單詞,長度介於2到5個字母之間。表結構很簡單:如何在MySQL中優化搜索字典數據庫
id | word | length
1 | stuff | 5
2 | ask | 3
所以字長有自己的專欄,我不知道這可能是有用的,但它的存在現在。
遊戲的原理涉及用戶輸入5個字母(口述給他),並試圖儘可能完成一個單詞。例如,假設他有字母A,C,F,R,T,他必須鍵入全部5.因此,他可以將單詞CRAFT
拼起來。或者,如果他沒有找出那一個,他可以看到這個詞RAFT
。如果他沒有看到,也許他會看到ART
。但是 - 在這種情況下,他不能只輸入3或4個字母,他必須輸入全部5個(因爲與遊戲其餘部分有關的原因,並且與此無關)。所以它必須是像ARTFC
或CFART
。現在,這個問題。
應用程序(PHP或Node.js)必須在MySQL數據庫中搜索用戶可能在字符串中鍵入的所有單詞。首先它應該搜索5個字母的單詞,然後如果它沒有找到任何它應該搜索4個字母的單詞(如果用戶鍵入ARTFC
它應該搜索ARTF
和RTFC
),可能會出現在5個字符的字符串中。如果它沒有發現,3個字母的單詞等
這似乎可能會有點慢。用戶最多可以同時提交10個這樣的5個字符的字符串,並且用戶數量很難預測。那麼,任何人都可以提出一個更好的方法來執行這個搜索,而不是分割字符串併發送連續查詢,直到我們找到一個單詞爲止?
作爲一個子問題,你認爲InnoDB會比MyISAM更好的選擇引擎嗎?數據庫表的唯一目的是這個搜索,沒有必要寫入它。