500 万を超えるレコードを含む大規模なデータベースがあります。このデータベースには 3 つのフィールド (ID、名前、テキスト) があり、フィールドIDには主キーがあり、フィールドnameにはFULLTEXTインデックスがあります。
フィールドをシークするサイト用の検索エンジンを作成したいのですが、インデックスnameを使用しFULLTEXTていますが、4文字未満のキーワードを受け入れないという欠点があるため、それを削除INDEX KEYしてフィールドに a を置きname、次を使用することにしましたリクエスト:
EXPLAIN SELECT * FROM table WHERE locate ('search', name) > 0;
問題は、このアプリケーションがインデックス KEY フィールド名を使用せず、次の要求を使用していることです。
EXPLAIN SELECT name FROM table WHERE locate ('search', name) > 0;
すべてのフィールドを選択すると、MYSQL がインデックスを使用INDEX KEYしない理由がわかりません。
あなたの意見では、この問題を解決する方法と、可能であればより良い代替案を教えてください。