- 90 名前:0 ◆SeZffd6X/Q mailto:sage [2012/12/27(木) 03:11:13.50 ]
- >>74
Androidでは実験したことないのでWindowsでの体験でいいだろうか? [ テキストファイル保存型の場合 ] 次のように1行のデータサイズ合計が24byteで固定されている場合 |No[4byte]|名前[20byte]|メモ[20byte]|死亡フラグ[1byte]| 10000行目のデータがほしい時はファイルシークを24(byte)×10000(行)すれば 一瞬にして目的のデータにたどり着けるので問題はありませんね? 今度は1行のデータサイズが「名前」「メモ」のデータは文字数が時と場合によってランダムでかわり 決定できないようなデータの場合 |No[4byte]|名前[不確定byte]|メモ[不確定byte]|死亡フラグ[1byte]| 10000行目のデータがほしい時は、基本的にforループを10000回まわして探しにいかないとダメになります (「カーソルをまわすやりかた」とか言われてます) SQLの場合、後者も前者と同じように扱え、基本的に1秒以内に完了します。 またNo0〜No10000までの死亡フラグを全て「生存(false)」から「死亡(true)」に変更したくなったとします。 これをカーソルまわしでやると、やはりfor10000ループが必要になりますが SQLの場合「update 死亡=true where 死亡=false」のようなコマンド1行で(例えです)行え、やはり1秒以内に完了します。 速度面の違いのほかにも、SQLにはテキストファイルより優れた機能がたくさんあります。 例えば、アプリでプロフィール変更機能などを実現しようとした時に、 50箇所くらいデータを変更したが、やっぱり取り消したいという事がありえます。 テキスト保存型だと、この機能を実装するのは煩わしいです 保存用テキストの他に作業用テキスト(一時ファイル)を用意し、 最終決定字に一時ファイルの内容を本ファイルへ一気に保存していく。 SQLではキャンセルコマンド1行でこれを実現できます。ロールバック機能といいます。 その1つの「ロールバック機能」は、 たとえば、
|

|