ハードディスクメンテナンス ブログ

投稿記事数8,000以上!PC,カメラ,オーディオ,ラジオ,航空,旧ゲームなど

[MySQL] idを詰める(連番を振り直す)方法

      2015年01月12日

>>高還元のクレジットカード比較 期間限定のキャッシュバックなど!<<


数分毎に定期的にログを取得するようなプログラムを書き、DBに格納し始める。

だが、ログが膨大になったのでスリム化したい。

数分毎なので1日に多数のレコードがあるが、内容(atai)を調べると、その中の1つだけで事足りる場合。

<test_db_001>
id,date,time,atai
1,2015-01-01,00:10:00,10
2,2015-01-01,00:20:00,10
3,2015-01-01,00:30:00,10
4,2015-01-02,00:10:00,20
5,2015-01-02,00:20:00,20
6,2015-01-02,00:30:00,20

「その中の1つだけで事足りる」というのは、値は常に変化するが、その動きが小さいため、どれか1つのレコードを抜き出しても問題ないような種のデータである。

まずは年月日(date)でSELECTして抽出する。

SELECT * FROM test_db_001 GROUP BY date ORDER BY id ASC ;

# 但しこの文でSELECTできるのは、dateが2015-01-01であればid(1,2,3)のどれであるかは不明なので、明確にするならそれに適したSELECT文を書くこと。

結果、id(1,4)が選択される。

<test_db_001>
id,date,time,atai
1,2015-01-01,00:10:00,10
4,2015-01-02,00:10:00,20

この状態でexportし、別名(test_db_002)でimportする(copyでも可)。

スポンサーリンク

しかし、これではidに隙間が生じており、使いにくい。

システムがidに依存しない場合、これを詰めてしまおう。

SET @i := 0 ;必須
UPDATE test_db_002 SET id = (@i := @i +1) ;

これで、以下のようにidを詰める(連番の振り直し)ことができる。

<test_db_002>
id,date,time,atai
1,2015-01-01,00:10:00,10
2,2015-01-02,00:10:00,20

ここでAUTO_INCREMENTを変えることを忘れないように。

この場合では、最終のidが2なので、次のid(AUTO_INCREMENT)は3になる。

そして、test_db_002をtest_db_001にリネームして終了。

phpMyAdminが使える環境であれば、簡単な操作で実行可能だ。

exportもimportも画面上部から可能であり、上のSQL文(UPDATE…)も画面上部にある「SQL」で可能。

AUTO_INCREMENTとリネームは、画面上部の「操作」にある。

操作

元の(膨大な)ログが必要であれば、リネームするかexportするなどして保存しておくこと。

スポンサーリンク



sha-bc@336×280

sha-bc@336×280


sha-bc@336×280

sha-bc@336×280

  関連記事

B018WRX202
Samsung(サムスン)の SSD 750 EVO 250GB MZ-750250B/IT がタイムセールで7,106円!

Samsung SSD 250GB 750 EVO ベーシックキット 2.5イン …

B01C5KVQQO
LGの 超横長(2560×1080) 29型 ゲーミング液晶モニター AH-IPS 非光沢 29UM68-P がタイムセールで46,980円!

超横長なので、ツールパレットなどがあるソフトは便利になるだろう。 LG 29UM …

TS256GSSD370,AHCI
TS256GSSD370(SSD,256GB,トランセンド)の速度テスト(ベンチマーク) 2015年2月?

追記:本件は速度が出ていないが、その後出るようになった。 関連:TS256GSS …

デビル メイ クライ 4 ベンチマーク(Core i7-6700,Intel HD Graphics 530,DirectX 10)
デビル メイ クライ 4 ベンチマーク(Core i7-6700,Intel HD Graphics 530,DirectX 10)

ビデオカードを搭載せずに、CPU内蔵GPUだけで試すベンチマーク。 CPU:Co …

B01DOWUCJO_VE248HR_タイムセール_クーポン
ASUSの 24型 ゲーミング液晶モニター VE248HR が タイムセール+クーポンで14,280円!

15,980円(タイムセール)-1,700円(クーポン)=14,280円! 関連 …

B015FGH38K
WD(Western Digital)の 6TB ハードディスク Blue 2年6ヶ月保証 WD60EZRZ/AFP がタイムセールで23,350円!

【Amazon.co.jp限定】WD HDD 内蔵ハードディスク 3.5インチ …

B006Z276X6
Cooler Masterの CPUクーラー Hyper TX3 EVO Intel/AMD両対応 RR-TX3E-28PK-J1 がタイムセールで2,980円!

Cooler Master Hyper TX3 EVO サイドフローCPUクーラ …

このドライブを圧縮してディスク領域を空ける
「このドライブを圧縮してディスク領域を空ける」にチェックを入れる?

2TB中930GBを使用中のドライブに対して このドライブを圧縮してディスク領域 …

no image
Debian CPU確認 (Processor,スペック)

rootで cat /proc/cpuinfo でCPUの確認が可能。 以下、表 …

アマゾン_Amazon
日本のアマゾンも無料商品供与によるレビュー(商品もらってレビュー)を禁止(レビューガイドライン更新:2016年11月22日)。Amazon Vine類は例外。

2016年11月22日、アマゾン(日本)のレビューガイドラインが更新され、無料提 …