[英]update a random row from a table
我在這里有此代碼:
UPDATE starinformation SET starOwner = -1 WHERE (
SELECT starinformation.starID
ORDER BY RAND( )
LIMIT 1
)
我想使用從該表中提取的信息更新表中的隨機行,並且僅影響1行。
這種方法有很多問題:
ORDER BY RAND() LIMIT 1
是主要的性能殺手:它將創建所有行的中間結果-即,如果表包含1兆行,則將觸摸其中的每一個行。 我的建議是
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.