2010-11-22 102 views
1

我正面臨一些非常奇怪的事情。無法從SQL Server中的表中選擇所有數據

在包含400000條記錄的表格(T)中。

當選擇這樣的:

select top 150000 * from T 

我得到的答案在3個secondes

,但如果我把他們的一切,我5分鐘後停止請求,而不必結果。

有關這個問題的任何想法?

THX,

+1

你有沒有索引在桌子上? – 2010-11-22 11:45:15

+0

你如何選擇數據?使用SMS? – abatishchev 2010-11-22 11:47:01

+0

你爲什麼試圖向客戶端獲得400.000條記錄? 你可以看看查詢計劃嗎? – Jan 2010-11-22 11:47:25

回答

4

查找原因的主要區域是:

  1. 磁盤IO
  2. 緩存命中率
  3. 表中的一個頁上的A嵌段由於其他進程(向您的查詢添加WITH(NOLOCK)表提示)
  4. 網絡瓶頸(如果goi ng客戶端關數據庫服務器)

我同意阿爾曼,索引是不需要的,每個表的頁面必須讀取。

+0

因爲我是一個未註冊的用戶,所以我不能滿足,但是會強烈懷疑編號爲3的 – 2010-11-22 11:59:32

+0

添加(NoLock)很棒! – 2010-11-22 12:01:45

+0

那麼,當請求試圖鎖定它想要讀取的表時它會被阻塞嗎?還有一些問題:我沒有在桌面上創建2個ndx,估算計劃將其中一個作爲結果。所以我會毀掉那些2 ndx並重新測試 – 2010-11-22 12:03:05

相關問題