我有以下查詢,但是過了一段時間,用戶開始在「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不是**數據庫產品......而像這樣的性能相關的東西通常是特定於供應商的 - 所以我們真的需要要知道你使用的是什麼數據庫系統。 –