Mysql

MySQL:查詢重複行或重複插入(更新)是否更有效?

  • May 7, 2019

只是對資源效率感到好奇。如果我有一個需要重複完成的插入列表,其中可能包含重複項(沒有辦法解決這個問題,我必須使用的 API 很糟糕),對我來說查詢主節點是否更好,並且只有在它不存在(即2個查詢),或者只是插入並更新重複語法?

謝謝!

以 250/小時的速度,所有可能的技術都非常快。無論如何,我會把我的 2 美分投入…

100 行的多INSERT行將執行 100 個人的 10 倍INSERTs

多行INSERT 可能會導致AUTO_INCREMENTs. 一般來說,該命令會預先分配它可能需要的所有 id,然後“燒掉”那些 id 沒有使用的。(REPLACE燒很多,因為它是DELETE+ INSERT。)

為了有效的“標準化”,請執行以下操作:

INSERT IGNORE INTO HostNorm (host_name)
   SELECT DISTINCT s.host_name
       FROM Staging AS s
       LEFT JOIN HostNorm AS n  ON n.host_name = s.host_name
       WHERE n.host_id IS NULL;
  • 可能的新值列表位於Staging.
  • HostNorm是需要放置“新”行的位置。
  • 只有“新”行被饋送到INSERT(見LEFT JOIN)。
  • IGNORE是為了適應有多個執行緒(連接)執行可能發生碰撞的類似插入。(罕見的碰撞會導致燒毀id。)
  • 這可以處理多少行沒有上限。
  • 這最適用於 100 行。
  • 這是為非常高速的輸入而設計的;對於您相對較慢的攝取速度,它應該可以正常工作。

更多討論在我的部落格中。

引用自:https://dba.stackexchange.com/questions/108592