私は大量のクエリを持っており、levenshteinを使ってタイプミスを計算しています。これで、levenshteinはmysqlに完全なCPU時間を要するようになりました。 私のクエリは、UNION文の全文検索+ levenshteinです。 sql1は現在のクエリですが、sql2は高速で完全なテキスト検索で、CPU時間が多すぎます。最後の1つはピークになるleventheinです。levenshteinの代替
あなたはどちらかといえば、入力ミスを防ぐ方法がありますか? ノーマライズデータには回答しないでください。私は考えましたが、データには適用できません。マッチ/計算を事前に作成できず、インデックスを持つ別のテーブルを作成できません。
$sql1 = "(SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE)) UNION (SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama bin laden') AS dist, sanction_id, prop_type, prop_value FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='') s WHERE dist < 3) ORDER BY sanction_id";
$sql2 = "SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE) ORDER BY sanction_id";
$sql3 = "SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama bin laden') AS dist, sanction_id, prop_type, prop_value FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='') s WHERE dist < 3";