如何提高sql server大資料條件下的查詢速度

2022-02-27 10:49:06 字數 2904 閱讀 1261

1樓:匿名使用者

1.關於索引優化

建索引的選擇必須結合sql查詢、修改、刪除語句的需要,一般的說法是在where裡經常出現的欄位建索引。如果在where經常是幾個欄位一起出現而且是用and連線的,那就應該建這幾個欄位一起的聯合索引,而且次序也需要考慮,一般是最常出現的放前面,重複率低的放前面。

sql server提供了一種簡化並自動維護資料庫的工具。這個稱之為資料庫維護計劃嚮導(database maintenance plan wizard ,dmpw)的工具也包括了對索引的優化。如果你執行這個嚮導,你會看到關於資料庫中關於索引的統計量,這些統計量作為日誌工作並定時更新,這樣就減輕了手工重建索引或者dbcc indexdefrag所帶來的工作量。

如果你不想自動定期重新整理索引統計量,你還可以在dmpw中選擇重新組織資料和資料頁,這將停止舊有索引並按特定的填充因子重建索引。

2.改善硬體(雙cpu,raid 5,增加記憶體)

tempdb這個臨時資料庫,它對效能的影響較大。tempdb和其他資料庫一樣可以增大,可以縮小。當資料檔案需要增長的時候,通常不能保持剩餘部分的連續性。

這時檔案就會產生碎片,這種碎片會造成效能下降。這種碎片屬於外來性碎片。要阻止在tempdb中產生外來性碎片,必須保證有足夠的硬碟空間。

一般將tempdb的容量放到平均使用容量。而你也應該允許tempdb自動增長,比如你有個一個超大的join操作,它建立了一個超過tempdb容量的時候,該查詢將失敗。你還要設定一個合理的單位增長量。

因為如果你設得太小,將會產生許多外來性碎片,反而會佔用更多資源。sqlserver調優最有效的做法之一,就是把爭奪資源的操作獨立出去。tempdb就是一個需要獨立出去的部分而tempdb和其他系統庫一樣是公用的,是存取最可能頻繁的庫,所有處理臨時表、子查詢、group by、排序、distinct、連線等等。

它最適合放到一個具有快速讀寫能力的裝置上。比如raid0卷或raid0+1捲上。

查詢語句一定要使用儲存過程;

3、查詢儘量使用top子句

4.將表按一定的約束分成子表,(如按分類)建立約束,在用like 時,先用分類 and like , 應該可能解決問題. 而且效果立稈見影!

(你要確定sql會認識你建的分割槽檢視).我一個表有上百萬的記錄(700兆),用分割槽檢視後,查詢速度基本跟10萬行一樣.

如果還是太慢,還可以考濾分散式分割槽檢視!這總可以解決問題了吧!

關鍵在於你能否把大表按某種約束分解成子表.

2樓:匿名使用者

避免或簡化排序

使用臨時表加速查詢

儘量不要用外連線

對於頻繁使用的sql語句建議用儲存過程

sql server大資料中查詢一條如何提高效率?

3樓:斯內科

你最好在主鍵上面建立索引。

select max(serialno) from a

如何優化sql server 大資料量時使用 like 查詢的速度?或有什麼別的方法實現模糊查詢?

4樓:匿名使用者

你可以把sql語句發上來看看

模糊查詢 速度問題夠嗆

建議可以使用萬用字元 也許能提高速度

如何優化sql server 大資料量時使用 like 查詢的速度

5樓:狗碎的青春

你可以把sql語句發上來看看

模糊查詢 速度問題夠嗆

建議可以使用萬用字元 也許能提高速度

如何提高上百萬級記錄mysql資料庫查詢速度

6樓:愛可生雲資料庫

先安裝 apache spark,查詢資料庫的速度可以提升10倍。

在已有的 mysql 伺服器之上使用 apache spark (無需將資料匯出到 spark 或者 hadoop 平臺上),這樣至少可以提升 10 倍的查詢效能。使用多個 mysql 伺服器(複製或者 percona xtradb cluster)可以讓我們在某些查詢上得到額外的效能提升。你也可以使用 spark 的快取功能來快取整個 mysql 查詢結果表。

思路很簡單:spark 可以通過 jdbc 讀取 mysql 上的資料,也可以執行 sql 查詢,因此我們可以直接連線到 mysql 並執行查詢。那麼為什麼速度會快呢?

對一些需要執行很長時間的查詢(如報表或者bi),由於 spark 是一個大規模並行系統,因此查詢會非常的快。mysql 只能為每一個查詢分配一個 cpu 核來處理,而 spark 可以使用所有叢集節點的所有核。在下面的例子中,我們會在 spark 中執行 mysql 查詢,這個查詢速度比直接在 mysql 上執行速度要快 5 到 10 倍。

另外,spark 可以增加「叢集」級別的並行機制,在使用 mysql 複製或者 percona xtradb cluster 的情況下,spark 可以把查詢變成一組更小的查詢(有點像使用了分割槽表時可以在每個分割槽都執行一個查詢),然後在多個 percona xtradb cluster 節點的多個從伺服器上並行的執行這些小查詢。最後它會使用map/reduce 方式將每個節點返回的結果聚合在一起形成完整的結果。

sqlserver2000 如何提高分頁查詢大資料量的效率

7樓:匿名使用者

sqlserver2005及以上的版本有row_number()函式可以高效分頁,sqlserver2000的話只能看演算法了

8樓:思考最光榮

可以從網上down一個分頁的儲存過程,然後針對你的具體業務來優化。

9樓:匿名使用者

分頁根據需求看看主鍵和演算法的綜合

如何提高sql查詢效率

sql server中如何理解 isnull 列名,0 和

1 isnull 引數1,引數2 判斷引數1是否為null,如果是,返回引數2,否則返回引數1。2 isnull 列名,0 isnull 函式是用來判斷列名是否為null,如果為null,則返回0,否則,返回列名的值。3 是不等號,與!一樣 比如select 3 where 1 2 查出來的結果是3...

sql server2019如何連線遠端的伺服器

1 開啟sql2008,使用windows身份登入 2 登入後,右鍵選擇 屬性 左側選擇 安全性 選中右側的 sql server 和 windows 身份驗證模式 以啟用混合登入模式 3 選擇 連線 勾選 允許遠端連線此伺服器 然後點 確定 4 安全性 登入名 sa 右鍵選擇 屬性 5 左側選擇 ...

如何連線SQLSERVER資料庫?window身份驗證跟sq

連結數bai據庫 資料庫的服務開啟 using sqlconnection conn new sqlconnection 你的du資料庫的連結字zhi符串 這樣就dao開啟了 conn.open window身份 回驗證與sqlserver身份驗證的區答別。安全級別不同。如果是window身份驗證,...