私は以下のクエリを持っていますが、ユーザが "ci_falsepositives"テーブルに項目を入れ始めると、 ci_falsepositivesテーブルには、ci_address_bookの参照フィールドとci_matched_sanctionsの別の参照フィールドが含まれています。他のテーブルがいっそういっぱいになると、SQLクエリは非常に遅くなります
新しいクエリを作成するにはどうすればよいのですが、それでも各フィールドを並べ替えることができますか。 たとえば私はできまだ一種の「ヒット」または「マッチ」
SELECT *, matches - falsepositives AS hits
FROM (SELECT c.*, IFNULL(p.total, 0) AS matches,
(SELECT COUNT(*)
FROM ci_falsepositives n
WHERE n.addressbook_id = c.reference
AND n.sanction_key IN
(SELECT sanction_key FROM ci_matched_sanctions)
) AS falsepositives
FROM ci_address_book c
LEFT JOIN
(SELECT addressbook_id, COUNT(match_id) AS total
FROM ci_matched_sanctions
GROUP BY addressbook_id) AS p
ON c.id = p.addressbook_id
) S
ORDER BY folder asc, wholename ASC
LIMIT 0,15
はあなたには、いくつかのindecesを追加する方法について考えたことはありますか? –
各テーブルにはプライマリインデックスであるidフィールドがあります – renevdkooi
** **データベースとバージョンは何ですか? ** SQL **は多くのデータベースシステムで使用されている言語であるStructured Query Languageです - SQLは**データベース製品ではありません**このようなパフォーマンス関連のものはベンダー固有のものであることが多いため、あなたが使用しているデータベースシステムを知るために... –