none
請問如何針對varbinary(MAX) 欄位為null值進行搜尋? RRS feed

  • 一般討論

  • 目前使用sql server 2008 eng standard 版本對varbinary(MAX) 欄位為null值進行搜尋,
    可是效率極差,只見server 記憶體不斷上升直到被耗盡,但卻無法成功搜尋,
    語法如下:
     select * from FileAttach where Data is null

    該table 總筆數只有10000多筆,
    請求各位高手提供建議,
    感謝!
    2009年11月5日 上午 02:53

所有回覆

  • 如果明確指定要查詢出來的欄位呢?
    例如:
    select Data from FileAttach where Data is null
    

    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    在本討論區使用正體中文(即繁體中文),是對參與的朋友的一種尊重,因此請用本討論區的語言:正體中文。
    2009年11月5日 上午 04:29
    版主
  • 感謝建議,不過還是一樣沒有結果.......
    2009年11月5日 上午 05:07
  • 沒有結果的意思是?
    連線逾時?找不到任何一筆資料?....????????


    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    在本討論區使用正體中文(即繁體中文),是對參與的朋友的一種尊重,因此請用本討論區的語言:正體中文。
    2009年11月5日 上午 05:20
    版主
  • server 記憶體不斷上升直到被耗盡,run了幾十分鐘還是沒有執行完畢,故手動停止查詢,
    謝謝!
    2009年11月5日 上午 05:51
  • 可以使用「執行計畫」察看查詢的成本,以便以改善查詢效能
    參考資料:How to: Display the Estimated Execution Plan
    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    在本討論區使用正體中文(即繁體中文),是對參與的朋友的一種尊重,因此請用本討論區的語言:正體中文。
    2009年11月5日 上午 06:36
    版主
  • 因為該欄位為varbinary(MAX),並無法建立index, 且因只需要搜尋該位為null值之資料,故也無其他欄位可作為限制條件,
    不知還有無其他方式可改善?
    Thanks!
    2009年11月5日 上午 07:31
  • hi
    select * from FileAttach where Data is null


    is null
    優化器並無法使用index(換句話說create index也沒多大幫助),基本上應該就是full tablescan
    建議where條件別使用is null

    或如版大說的使用執行計畫查看那個環節成本高

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月5日 上午 07:39
    版主
  • 如果is null 資料量>=table總筆數的2/3,那full tablescan會比較OK

    如果is null資料量很少,那建議多新增column(針對data column ==>update 0),同時建立index並改寫SQL
    select newData from FileAttach where newData =0

    參考看看


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月5日 下午 04:01
    版主
  • 我再試看看,感謝各位的建議.
    2009年11月9日 上午 01:36