「first_name」という列に名が保存されていて、「last_name」という列に姓が保存されている場合、どのように人のフルネームを検索できますか
このテーブルには数百万のレコードがあるため、検索を効率的に行う方法が必要であることに注意してください。そして私はMySQLサーバーを使用しています
列 first_name と列 last_name は両方とも VARCHAR(80) 型です。
これまでのところ、次のことを試しましたが、 concat 関数のためにインデックスを無視するため、動作が遅くなります
SELECT first_name, phone FROM people
WHERE CONCAT_WS(' ',first_name, last_name) like '%John Smith%'
また、インデックス全文インデックス on( first_name, last_name) を追加してから、このクエリを追加しようとしました
SELECT *
FROM people
WHERE MATCH(first_name, last_name) AGAINST('John Smith')
ただし、これは最速のクエリではありません。この問題に対するより良いアプローチはありますか?
ありがとう