[英]MYSQL query execution time
我有一個問題問你。 我的數據庫有250.000條記錄,其中2個文本字段最多包含300個單詞。 我想選擇所有符合某些條件的數據,然后將其放在另一個表中。 我想刪除這些不符合我的條件的錄音:
DELETE FROM `cables` WHERE
`data` NOT LIKE "%BRV%" AND
`data` NOT LIKE "%Venezuela%" AND
`data` NOT LIKE "%Caracas%" AND
`data` NOT LIKE "%Hugo Chavez%" AND
`tags` NOT LIKE "%BRV%" AND
`tags` NOT LIKE "%Venezuela%" AND
`tags` NOT LIKE "%Caracas%" AND
`tags` NOT LIKE "%Hugo Chavez%" AND
`header` NOT LIKE "%BRV%" AND
`header` NOT LIKE "%Venezuela%" AND
`header` NOT LIKE "%Caracas%" AND
`header` NOT LIKE "%Hugo Chavez%" AND
`subject` NOT LIKE "%BRV%" AND
`subject` NOT LIKE "%Venezuela%" AND
`subject` NOT LIKE "%Caracas%" AND
`subject` NOT LIKE "%Hugo Chavez%" AND
`tmp` NOT LIKE "%BRV%" AND
`tmp` NOT LIKE "%Venezuela%" AND
`tmp` NOT LIKE "%Caracas%" AND
`tmp` NOT LIKE "%Hugo Chavez%" AND
`identifier` NOT LIKE "%BRV%" AND
`identifier` NOT LIKE "%Venezuela%" AND
`identifier` NOT LIKE "%Caracas%" AND
`identifier` NOT LIKE "%Hugo Chavez%"
如果每一行至少包含這些單詞中的任何一個,則可以。 事實是,自執行以來,我已經有3個小時了,什么也沒發生。 我已經停止了該過程,但沒有任何反應。 最終結果應該有大約14000張錄音,我該怎么辦? 謝謝!!!!
什么都沒發生,因為您停止了它。 因此, commit;
尚未完成。
您應該拆分查詢以縮短執行時間。
NOT LIKE %%
非常非常昂貴!!! (索引,如果有一些未使用...)
嘗試REGEXP
,在這里可能會更好。
DELETE FROM `cables` WHERE
`data` NOT REGEXP 'BRV|Venezuela|Caracas|Hugo Chavez' AND
`tags` NOT REGEXP 'BRV|Venezuela|Caracas|Hugo Chavez' AND
`header` NOT REGEXP 'BRV|Venezuela|Caracas|Hugo Chavez' AND
`subject` NOT REGEXP 'BRV|Venezuela|Caracas|Hugo Chavez' AND
`tmp` NOT REGEXP 'BRV|Venezuela|Caracas|Hugo Chavez' AND
`identifier` NOT REGEXP 'BRV|Venezuela|Caracas|Hugo Chavez'
也可以串聯使用(Karolis的建議)
DELETE FROM `cables` WHERE
CONCAT( `data`, `tags`, `header`, `subject`, `tmp`, `identifier` )
NOT REGEXP 'BRV|Venezuela|Caracas|Hugo Chavez'
問題在於, LIKE %text%
將不會使用全文索引。 因此,包含250.000個條目和很多LIKE %%
標准的大型表將花費很長時間。
您確定需要前導的“%...”嗎? 否則,您可以嘗試使用布爾搜索修飾符 。
為什么不反轉條件以選擇匹配的記錄,而不是刪除不匹配的記錄? 然后將它們插入另一個表? 這可能會更快一些,因為即使過度使用非常規條件也要3個小時,對於250'000行來說太長了。
INSER INTO `selected_cables`
SELECT * FROM `cables`
WHERE NOT (
`data` NOT LIKE "%BRV%" AND
`data` NOT LIKE "%Venezuela%" AND
`data` NOT LIKE "%Caracas%" AND
`data` NOT LIKE "%Hugo Chavez%" AND
`tags` NOT LIKE "%BRV%" AND
`tags` NOT LIKE "%Venezuela%" AND
`tags` NOT LIKE "%Caracas%" AND
`tags` NOT LIKE "%Hugo Chavez%" AND
`header` NOT LIKE "%BRV%" AND
`header` NOT LIKE "%Venezuela%" AND
`header` NOT LIKE "%Caracas%" AND
`header` NOT LIKE "%Hugo Chavez%" AND
`subject` NOT LIKE "%BRV%" AND
`subject` NOT LIKE "%Venezuela%" AND
`subject` NOT LIKE "%Caracas%" AND
`subject` NOT LIKE "%Hugo Chavez%" AND
`tmp` NOT LIKE "%BRV%" AND
`tmp` NOT LIKE "%Venezuela%" AND
`tmp` NOT LIKE "%Caracas%" AND
`tmp` NOT LIKE "%Hugo Chavez%" AND
`identifier` NOT LIKE "%BRV%" AND
`identifier` NOT LIKE "%Venezuela%" AND
`identifier` NOT LIKE "%Caracas%" AND
`identifier` NOT LIKE "%Hugo Chavez%")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.