簡體   English   中英

更新表中的隨機行

[英]update a random row from a table

我在這里有此代碼:

    UPDATE starinformation SET starOwner = -1 WHERE (
SELECT starinformation.starID
ORDER BY RAND( ) 
LIMIT 1
)

我想使用從該表中提取的信息更新表中的隨機行,並且僅影響1行。

這種方法有很多問題:

  • MySQL不允許將修改后的外部查詢與選擇子查詢組合在一起以觸摸同一張表
  • ORDER BY RAND() LIMIT 1是主要的性能殺手:它將創建所有行的中間結果-即,如果表包含1兆行,則將觸摸其中的每一個行。

我的建議是

  • 始終具有可排序的單字段PK
  • SELECT ROUND(RAND()*COUNT(*)) AS num FROM starinformation運行SELECT ROUND(RAND()*COUNT(*)) AS num FROM starinformation ,返回$ num
  • 運行UPDATE starinformation SET starOwner = -1 ORDER BY [pk-field] LIMIT $num,1

暫無
暫無

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

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