我有一個36米行的相當大的表。我想創建另一個表,其中包含隨機順序中的一列。MySQL:使用鎖從另一個表創建表
CREATE TABLE random_stamps AS SELECT time FROM cur_a order by rand();
問題是我超出了預期的鎖定表大小。我試圖鎖定表cur_a
,但cur_a
已鎖定,我無法創建另一個表。
我無法增加鎖表的大小,因爲我沒有對服務器的根訪問權限。
我有一個36米行的相當大的表。我想創建另一個表,其中包含隨機順序中的一列。MySQL:使用鎖從另一個表創建表
CREATE TABLE random_stamps AS SELECT time FROM cur_a order by rand();
問題是我超出了預期的鎖定表大小。我試圖鎖定表cur_a
,但cur_a
已鎖定,我無法創建另一個表。
我無法增加鎖表的大小,因爲我沒有對服務器的根訪問權限。
我會加入另一列建議做你想要什麼:
CREATE TABLE random_stamps AS
SELECT time, rand() as rand
FROM cur_a;
CREATE INDEX idx_random_stamps_rand ON random_stamps(rand, time);
然後,當你取數據,你可以使用order by
,這將使用索引:
SELECT rs.*
FROM random_stamps rs
ORDER BY rand;
該查詢仍超過鎖定大小表的大小。 – user3446746
@ user3446746。 。 。你可能會覺得這很有趣:https://major.io/2010/01/29/mysql-the-total-number-of-locks-exceeds-the-lock-table-size/。 –
行中數據庫表是默認的*無序*,你認爲插入順序決定了'SELECT'的輸出順序 - 你錯了 –
你只用一個字段創建,也許你需要一個View? –