主鍵重復(fù)怎么解決 如何刪除mysql主鍵索引?
如何刪除mysql主鍵索引?每個表需要一個主鍵的設(shè)計規(guī)范不是單純的為了查詢更快。MySQL InnoDB存儲引擎的數(shù)據(jù)存儲格式就是主鍵索引(聚簇索引)。即使是一個沒有主鍵的表,其實也是有一個隱藏的主鍵
如何刪除mysql主鍵索引?
每個表需要一個主鍵的設(shè)計規(guī)范不是單純的為了查詢更快。MySQL InnoDB存儲引擎的數(shù)據(jù)存儲格式就是主鍵索引(聚簇索引)。即使是一個沒有主鍵的表,其實也是有一個隱藏的主鍵。沒有主鍵會有什么影響呢?我舉一個例子:一個集群,為了保證數(shù)據(jù)高可用,設(shè)置一個主庫多個從庫。里面有一張表,100w條數(shù)據(jù),不算很大。有一天要刪掉40w條數(shù)據(jù)。主庫上執(zhí)行刪除操作大約十幾分鐘(可能還不到),從庫上因為沒有相同的主鍵,所以刪除需要進行全表掃描,掃描的行數(shù)就是100w*40w=400億。數(shù)據(jù)量大的話,可能需要幾天才能刪完。這時候從庫就完全沒有作用了。所以添加一個主鍵是很有必要的。
Mysql如何去掉數(shù)據(jù)庫中的重復(fù)記錄?
很簡單 通過id刪除
DELETE
FROM
table_name AS ta
WHERE
ta.唯一鍵 <> (
SELECT
t.maxid
FROM
( SELECT max( tb.唯一鍵 ) AS maxid FROM table_name AS tb WHERE ta.判斷重復(fù)的列 = tb.判斷重復(fù)的列 ) t
)