簡體   English   中英

MySQL更新操作的IN Criteria性能

[英]IN Criteria performance for update operation in MySQL

我已經讀到,如果在IN標准中傳遞的參數數量很大,則最好創建一個臨時表。 這用於選擇查詢。 這對更新查詢也適用嗎? 我有一個更新查詢,該查詢使用3個表聯接(內部聯接)並在IN條件中傳遞1000個參數,並且該查詢在循環中運行200次或更多次。 哪個是執行此查詢的最佳方法?

IN操作通常很慢。 將1000個參數傳遞給任何查詢聽起來很糟糕。 如果可以避免,請執行此操作。 現在,我真的可以使用臨時表了。 您甚至可以使用表的索引。 我的意思是,不要只是在其中添加值,而是要使用有助於您優化搜索的索引。

另一方面,帶索引的添加要比不帶索引的添加要慢。 去那里進行經驗測試。 現在,我認為必須記住,使用其他表時不需要使用IN子句,因為可以使用EXISTS子句,通常可以提高性能。 IE瀏覽器:

select * from yourTable yt
where exists (
    select * from yourTempTable ytt
    where yt.id = ytt.id
)

我既不知道您的查詢,也不知道數據,但這將使您了解如何執行此操作。 請注意,內部select *select aSingleField一樣快,因為數據庫引擎對其進行了優化。

這些都是我的想法。 但是請記住,要100%確定最適合您的問題,沒有什么比執行測試和安排測試時間更合適了:)希望有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM