- PR -

最終行にinsertされない?

投稿者投稿内容
Duke
常連さん
会議室デビュー日: 2004/06/21
投稿数: 24
投稿日時: 2005-11-07 20:41
七味唐辛子さん
有難うございました。
でっち6号
ご丁寧なご指摘有難うございます。

こういう仕様になっていたとは知りませんでした・・・。


NF
会議室デビュー日: 2005/11/14
投稿数: 2
投稿日時: 2005-11-14 09:23
引用:

Dukeさんの書き込み (2005-11-07 20:41) より:
こういう仕様になっていたとは知りませんでした・・・。



その仕様ってホワイトペーパー等に乗っていますでしょうか?
仕様を探しているのですが、見当たらずただいま調査中になります。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-14 09:47
引用:

Dukeさんの書き込み (2005-11-07 19:33) より:

最終行に追加されるということとorder byの関連性が見えてきませんで・・・。


要するに最終行に追加されることを期待・意識した実装はやめましょうということです。
期待・意識をしないということで、抽出の際には、

引用:

未記入さんの書き込み (2005-11-07 14:16) より:

物理実装など意識せず、すなおに order by を都度指定するのが正解。


という未記入さんの意見に繋がるということです。

確かに紛らわしい展開だったかもしれませんね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2005-11-14 09:54
>仕様を探しているのですが、見当たらずただいま調査中になります。

リレーショナル・データベースでは、テーブル=表ではなく、表になって
表示されているのは単なる見かけだけだけですので、実際には数学でいう
「集合」で表せるようです。従ってデータの順序という概念はありません。

http://www.geocities.jp/mickindex/database/db_whyname.html
私も最初順序があるものと思っていましたが、この辺でなるほど!と思いました。

お財布の中のコインが、どのような順序で格納されたか?
というのが意味がないのと同じと考えるといいようです。
NF
会議室デビュー日: 2005/11/14
投稿数: 2
投稿日時: 2005-11-14 21:03
引用:

http://www.geocities.jp/mickindex/database/db_whyname.html
私も最初順序があるものと思っていましたが、この辺でなるほど!と思いました。




有難うございます。
理屈ではわかっていても、実際は???ということで、
マイクロソフトに問い合わせてみました!!
がっ、、
まわされまわされ気が付けば30分近く格闘した結果、
webから問い合わせてくれと・・・。
また問い合わせた結果がきましたら
お知らせいたしますがなんか絶望的ですわ・・・・
ジョウジ
会議室デビュー日: 2005/02/05
投稿数: 7
お住まい・勤務地: 横浜緑区
投稿日時: 2005-11-14 22:19
引用:

なか-chanさんの書き込み (2005-11-14 09:54) より:
http://www.geocities.jp/mickindex/database/db_whyname.html



SQL Server 2000が関係モデルの関係で
最終行にinsertされないということに関連するようには見えないのは
私だけでしょうか?
通常ですと最終行にinsertされてますよね?
で、selectすると普通に最終行に表示されている。
これってどう解釈するんだろって。
いずれにしろNFさんは理解できたのかもしれませんが、
私は複雑になってきました。
これまで私も最終行にinsertされているものだと
思っておりましたので質問させていただきました。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2005-11-14 22:52
最終行に insert「する」≠最終行に insert「された」

「最終行に insert された」は現象としてそうなっただけであって、
明確に最終行に insert しようとしてそうなった訳ではない、という
ことなのでは。

SQL Server は疎いのですが(もとい、SQL Server『も』)、
Oracle なんかだとバッファから空きブロックを検索して格納しようと
しますが、そのときは最終ブロックなんてことはありません。
insert しかしないデータベースであれば結果的に最終行というかたちに
なるかもしれませんが、delete も大量に実行する環境なら、たまたま
insert できる空きブロックが見つかればそこに保存して終了! と
なります。

[ここから追加]

本来なら、LRU リストから空きブロックをスキャンして云々などという
動作を説明すべきかもしれないですが、長くなりそうなのでスッパリ割愛。

[ここまで追加]


[ メッセージ編集済み 編集者: もしもし 編集日時 2005-11-14 22:59 ]
未記入
会議室デビュー日: 2005/10/01
投稿数: 7
投稿日時: 2005-11-14 23:06
まずは、「最終行」とは何かを考えてみる必要がありそうですね。

一人の人間が更新する場合は「最終行」というか「最後に追加した行」というものはあるのかもしれません。

でも多数の人間が関わってくると、「最終行」という発想自体が無意味なことに気がつきます。

つまり、「最終行」ってどういう意味?ということを明確にしなければならない。

私が最後に書いた行なのか、最後の時刻に更新したのか、業務的には最初に受け付けられたトランザクション番号順なのか

いろいろなケースが発生するわけです。

というとこで、順序は Order By で制御してくださいね。ということになっているんだろうなと考えます。

スキルアップ/キャリアアップ(JOB@IT)