mysql以降、自己増分シーケンスフィールドを追加
1690 ワード
表前期設計では考慮されていないため,後続データが増加した場合,自己増加idフィールドは与えられなかった.
データが数百万に達すると、ページングが遅くなります.(キーワード、ページング最適化)
今考えて、自己増加シーケンスを追加します.
しかしすでに数十万のデータがあり,あるフィールドの順序で自己付加価値の初期化を行うことを考えている.追加の論理コードで実現したくない.
バージョン5.7 innodbエンジン
私はそうしました.
この数歩で、私の効果に達しました.
全体的な考え方は次のとおりです.
1、テーブルのデフォルトのソートを変更します(ここではプライマリ・キーを変更します).
2、非プライマリキーを追加し、IDフィールドを自増する.
データが数百万に達すると、ページングが遅くなります.(キーワード、ページング最適化)
今考えて、自己増加シーケンスを追加します.
しかしすでに数十万のデータがあり,あるフィールドの順序で自己付加価値の初期化を行うことを考えている.追加の論理コードで実現したくない.
バージョン5.7 innodbエンジン
私はそうしました.
-- 1、 ,
-- 2、
-- 2.1 ,varchar(100) int( )
alter table t_bd_extension_show modify column showId int;
-- 2.2 , showId ( , )
alter table t_bd_extension_show add primary key (showId);
-- 3、 ,
alter table t_bd_extension_show add column id BIGINT NOT NULL;
-- key
alter table t_bd_extension_show ADD KEY key_t_bd_extension_show_id(id);
-- id , 1 , +1
ALTER TABLE t_bd_extension_show MODIFY id BIGINT auto_increment;
-- 4、 , id
-- 4.1 :150628
select max(id) from t_bd_extension_show;
-- 4.2 , , id
alter table t_bd_extension_show auto_increment=150628;
-- 5、
-- 5.1、
alter table t_bd_extension_show drop primary key;
-- 5.2、
alter table t_bd_extension_show modify column showId varchar(100);
この数歩で、私の効果に達しました.
mysql> select showId,id from t_bd_extension_show order by id desc limit 10;
+---------+--------+
| showId | id |
+---------+--------+
| 1839984 | 150628 |
| 1839982 | 150627 |
| 1839981 | 150626 |
| 1839979 | 150625 |
| 1839977 | 150624 |
| 1839976 | 150623 |
| 1839975 | 150622 |
| 1839974 | 150621 |
| 1839972 | 150620 |
| 1839970 | 150619 |
+---------+--------+
-- showId , id。
-- , , , 。
全体的な考え方は次のとおりです.
1、テーブルのデフォルトのソートを変更します(ここではプライマリ・キーを変更します).
2、非プライマリキーを追加し、IDフィールドを自増する.