1. 程式人生 > >如果資料量特別大的時候應該如何優化sql語句

如果資料量特別大的時候應該如何優化sql語句

1.你所有的關聯欄位,應該在相應表中有唯一索引,最好是主鍵

2.資料量過大,如果你cdb_members的記錄很多,遠遠大於500條,可以考慮改變程式,先從此表裡面獲取500條資料,然後在迴圈裡面每條資料庫關聯獲取其它表的資訊,這樣就不需要先對五個表做連結。儘量不適用聯合查詢,可以把sql拆分多個進行查詢

3.比如,控制有限欄位,有限資料量。關聯查詢時先過濾結果集,再進行關聯。避免一次性大批量讀取資料。

4.還有sql 語句執行計劃重用     sql 需要先編譯,生成執行計劃,才能執行。如果執行計劃重用,就不需要生成執行計劃 了

還有一點,條件左邊,一定要是欄位,而不能是表達 式。建立相對的索引。

相關推薦

如果料量特別的時候應該如何優化sql語句

1.你所有的關聯欄位,應該在相應表中有唯一索引,最好是主鍵 2.資料量過大,如果你cdb_members的記錄很多,遠遠大於500條,可以考慮改變程式,先從此表裡面獲取500條資料,然後在迴圈裡面每條資料庫關聯獲取其它表的資訊,這樣就不需要先對五個表做連結。儘量不適用聯合

關於料量,且SQL已經不能再優化的檢視的解決辦法(二)

         一般情況下在上篇文章的處理後,利用物化檢視,已經能夠解決複雜檢視的查詢效率了,但是有時候資料量是在過大,且檢視中使用了很多自定義的函式。這兩種情況單單是建物化檢視也提升不了效率。    第一,資料量過大,物化檢視的建立及其緩慢,而且由於由於是做資料介面,要求

爭對mysql表料量比較優化的幾點建議

1、優化你的sql和索引,比如優化你的sql語句的寫法,不要把sql語句寫的太複雜,使用“臨時表”暫存中間結果等; 2、加快取,比如使用memcached,redis等; 3、如果以上都做了後,還是慢,可以考慮做主從複製或主主複製,讀寫分離,可以在應用層做,效率高,也可以用三方工具,        第三方工具

MySql 分頁SQL 料量limit替代和優化(試驗)

select SQL_NO_CACHE u.id, u.user_id, u.user_name, u.user_name_index, u.email, u.pwd, u.email_token, u.email_active_date, u.

SQL料量分頁效能優化

目前在進行web api只讀介面的改造,在改造過程中,發現改在後響應時間和之前區別不是很大,通過測試結果顯示在sql的分頁功能處找到原因,並對其進行優化,優化方案如下。測試內容此次執行時間對比採用平臺資金記錄最多的使用者 user_id 36062測試次數未5次  為避免索引

料量表的查詢優化及索引使用

一、對於運算邏輯,儘可能將要統計的各專案整合在一個查詢語句中計算,而不是用分組條件或分專案呼叫多個查詢語句,而後在程式碼裡計算結果。 二、查詢語句的優化,諸如不用"select *"、多表關聯查詢時新增別名於查詢欄位上、避免使用in、not in關鍵字、非去除重複時用union all替換uni

料量 Mybatis 分頁外掛Count語句優化

前言 當在大數量的情況下,進行分頁查詢,統計總數時,會自動count一次,這個語句是在我們的查詢語句的基礎上巢狀一層,如: SELECT COUNT(*) FROM (主sql) 這樣在資料量大的情況下,會出問題,很容易cpu就跑滿了 優化 在mapper.xml

java excel料量匯入匯出與優化

package com.hundsun.ta.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java

Mysql匯入料量SQL檔案

問題描述:Navicat for Mysql 匯入資料量較大的sql檔案時,會提示操作失敗,如圖, 解決方法: 採用mysql source命令匯入; 操作步驟: 1. 開啟cmd,輸入命令:

mysql 料量時 limit查詢優化

一般,我們在做分頁時,用的是語句如下:select * from table LIMIT 5,10; #返回第6-15行資料但是,如果資料量很大,比如>1000萬,則利用以上的查詢會非常慢,可以利用以下語句進行優化:Select * From table Where I

料量下查詢顯示優化方案小結

# 大資料量下查詢顯示優化方案小結 # 最近工作中,遇到了優化大批量資料查詢和顯示的問題,資料量在10W級別。經過反覆設計和討論,最終得到優化到了較為滿意的效果,在此記錄小結下,在解決此類問題中的思考。 ## 問題背景說明 ## 通常情況下,使用者查詢資料量不超過1千條,但有幾個大戶,通過某種方式,生成

mysql查詢哪個表料量

use information_schema;select table_name,table_rows from tables where table_schema='cargo_new' order by table_rows desc limit 3 -- cargo_new (選擇資料庫)

MySQL Insert料量導致報錯 MySQL server has gone away

接手了同事的專案,其中有一個功能是儲存郵件模板(包含圖片),同事之前的做法是把圖片進行base64編碼然後存在mysql資料庫中(欄位型別為mediumtext)然後儲存三張圖片(大概400k)的時候報錯MySQL server has gone away 然後檢視官方文件https://dev.mysql

介面料量,導致記憶體溢位,解決辦法

通常我們使用介面呼叫資料總是返回一段我們需要的資訊,或者是json 格式資訊,通過接收將資料儲存到程式當中,再對接收到的資料進行轉換成對應的模型格式 。目前遇到的問題是接收的資料量過於巨大,導致完整接收將導致記憶體溢位,無法進行接下去的工作 。 解決辦法: 我們將資料儲存到本地檔案 ,再通過

Mybatis中使用流式查詢避免料量導致OOM

一、前言 前面介紹了裸露JDBC 方式使用流式程式設計,下面介紹下MYbatis中兩種使用流式查詢方法 二、Mybaits中MyBatisCursorItemReader的使用 2.1 配置 MyBatisCursorItemReader的注入 <bean id="myMyBa

Mysql中使用JDBC流式查詢避免料量導致OOM

一、前言 java 中MySQL JDBC 封裝了流式查詢操作,通過設定幾個引數,就可以避免一次返回資料過大導致 OOM。 二、如何使用 2.1 之前查詢 public void selectData(String sqlCmd) throws SQLException {    v

記kafka partition料量導致不能正確重啟

某臺kafka伺服器負載過高,機器掛掉一段是時間後,kill掉佔用記憶體的程序,然後重啟kafka服務,但是一直不能完成啟動和資料同步,日誌如下fset 0 to broker BrokerEndPoint(11,192.168.207.79,9092)] ) (kafka

WCF入門(一)--Request Entity Too large 傳輸的料量

      通過WCF進行資料的查詢或者新增的時候,如果資料量過大,一般會報出如下的錯誤:      1、已超過傳入訊息(65536)的最大訊息大小配額。若要增加配額,請使用相應繫結元素上的MaxRe

Hibernate在處理料量比較的時候記憶體不釋放的解決方案

                    隨著資訊化的推進,系統的依賴性也變的越來越強,所以各種資料不斷積累,資料開發率並不高,所以資料還不能準確高效的使用,這個時候我們就需要將資料匯出到Excel然後

QT快速讀取料量的Excel檔案

     最近寫的一個專案中,有需要讀取資料量很大(有10個sheet,每個sheet有65535行11列的資料)的Excel檔案,用了COM和QODBC兩種方法讀取,速度很慢。 你可能會問,為啥不把資料放在資料庫裡,那樣讀取的速度更快?當然,需求要求是可以從資料庫或者從E