標準英語アルファベットのすべての単語を含む MySQL データベースがあり、これを使用して単純な Scrabble 単語ジェネレーターを作成しています。データベースは 26 のテーブルに分かれています: アルファベットの各文字に 1 つずつ。各テーブルには次の 2 つの列が含まれます。
- "Word" 列: この列は主キーであり、char(12) 型であり、null 値を受け入れません。
- 「長さ」列: この列には符号なしの tinyint 値が含まれ、null 値は受け入れられません。
私のアプリケーションでは、ユーザーが任意の数の文字をテキスト ボックス (タイルを示す) に入力し、次のコードを使用してデータベースにクエリを実行します。
// this is looped over 26 times, and $char is a letter between 'A' and 'Z'
// check if the user entered in character $char or a blank tile (signified by ? in app)
// this check prevents me from having to query useless tables
if (in_array($char, $lettersArray) || $blanks)
{
// if so, select all words that have a length that's possible to make
$query = 'SELECT Word FROM '.$char.'Words WHERE Length <= '.strlen($letters);
$result = $db->query($query);
$num_results = $result->num_rows;
for ($j = 0; $j < $num_results; $j++)
{
// determine if it's possible to create word based on letters input
// if so, perform appropriate code
}
}
すべてが機能していますが、私のアプリケーションは競合他社 (理論的な競合、つまり、これは私が自分で作成した学習プロジェクトであり、インターネット上でリリースすることはないと思います) に比べて時間がかかります。アプリケーションはローカル コンピューターにあります。phpMyAdmin の自動最適化機能を使ってみましたが、目立った速度向上は見られませんでした。