私は会社のイントラネット用にかなり大きな「検索」エンジンを構築しています。1miljonに加えて、かなり高速なサーバーで実行されているエントリがありますが、一部の検索クエリには最大1分かかります。
これがテーブルの外観です
インデックスを作成してみましたが、何か足りないようです。これがshowindexの表示です。
これはクエリ自体であり、クエリをほとんど遅くするのは順序ですが、並べ替えのないクエリでも多少遅くなります。
SELECT SQL_CALC_FOUND_ROWS *
FROM `businessunit`
INNER JOIN `businessunit-postaddress` ON `businessunit`.`Id` = `businessunit-postaddress`.`BusinessUnit`
WHERE `businessunit`.`Name` LIKE 'tanto%'
ORDER BY `businessunit`.`Premium` DESC ,
CASE WHEN `businessunit`.`Name` = 'tanto'
THEN 0
WHEN `businessunit`.`Name` LIKE 'tanto %'
THEN 1
WHEN `businessunit`.`Name` LIKE 'tanto%'
THEN 2
ELSE 3
END , `businessunit`.`Name`
LIMIT 0 , 30
どんな助けでも大歓迎です
編集:
このクエリを99%窒息させているのは、ワイルドキャラクターとの関連性による順序付け%
です。fsortを使用する