none
SQL SELECT 查詢的機制 RRS feed

  • 問題

  • 我想請問關於MS SQL內SELECT查詢的機制,如果我某資料表內有時間的DATA,我想取某段時間的DATA出來討論,

    比如2009/8一整個的資料出來討論,但問題是我的資料庫是隨著時間不斷更新資料,如果SELECT的指令是從第一列的

    資料開始判斷我的時間符不符合我的時間條件式,那我的資料庫式即時更新的,每列的資料是不斷增加,所以程式查詢是沒停

    止的時候嘛?

    如果是這樣,我目前想到的解決辦法是,時間那一欄的資料利用排序方法先,再用IF的判斷式讓SELECT時間超過我指定時間停止查詢,

    但時間那一欄的資料要先排序的話,資料更新似乎葉是個問題,有無好的解決方法。

    這跟所謂的動態資料庫撰寫有關嘛??

    麻煩大家解答
    2009年10月9日 上午 03:17

解答

  • hi
    不會有這樣的情況發生(永遠查不停@@)
    SQL SERVER database engine提供鎖定機能(Locking Facility)來維持資料一致性,完成性,隔離性...等
    假設10:01 am  select * ... where mydate='2009/8' 
    後面有人insert new data(10:02 am),那你的session是不會查到新資料了(也就是舊資料)
    可以參考
    交易 (Database Engine)
    http://technet.microsoft.com/zh-tw/library/ms190612.aspx

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月9日 上午 04:58
    版主

所有回覆

  • hi
    不會有這樣的情況發生(永遠查不停@@)
    SQL SERVER database engine提供鎖定機能(Locking Facility)來維持資料一致性,完成性,隔離性...等
    假設10:01 am  select * ... where mydate='2009/8' 
    後面有人insert new data(10:02 am),那你的session是不會查到新資料了(也就是舊資料)
    可以參考
    交易 (Database Engine)
    http://technet.microsoft.com/zh-tw/library/ms190612.aspx

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月9日 上午 04:58
    版主
  • 所以如果我在2009/8  10:01 am 送出 select * ... where mydate='2009/8'的查詢,資料庫在接下來還是會有人繼續10:02 分後  UPLOAD data,所以我查詢的

    資料只會查到10:01 am分之前的?  因為目前需從外部鑽寫一個資料庫查詢程式,資料庫檔案太大了,我怕查詢時取出我要的,資料量會沒完沒了,我想我知道ricoisme

    的意思了,在ricoisme網站文中提到的交易 隔離性,謝謝ricoisme。
    2009年10月9日 上午 05:53
  • yes

    希望有幫到你~~^^
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月10日 下午 02:43
    版主