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
しない理由がわかりません。
あなたの意見では、この問題を解決する方法と、可能であればより良い代替案を教えてください。