當前位置:首頁 » 編程語言 » sql千萬數據查詢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql千萬數據查詢

發布時間: 2022-08-05 17:16:59

『壹』 mysql查詢千萬級別大表某一天的數據sql怎麼寫

查詢條件寫一天不就行么 跟是不是千萬級別的表有啥關系,卡的話加索引

『貳』 有單表千萬數據量,現在要分頁顯示,怎麼快速sql查詢

/*===============================================*/
/*Author:www.51pansou.com*/
/*==============================================*/
ALTERPROCEDURE[dbo].[Pg_Paging]
@Tablesvarchar(1000),--表名,多紅表是請使用tAainnerjointBbOna.AID=b.AID
@PKvarchar(100),--主鍵,可以帶表頭a.AID
@Sortvarchar(200)='',--排序欄位
@PageNumberint=1,--開始頁碼
@PageSizeint=10,--頁大小
@Fieldsvarchar(1000)='*',--讀取欄位
@Filtervarchar(1000)=NULL,--Where條件
@Groupvarchar(1000)=NULL,--分組
@isCountbit=0--1--是否獲得總記錄數
AS
--
--select*fromGL_NEWSorderbyGN_UPDATE_DATEDESC
--execPg_Paging@Tables='tb_NewsInfo',@PK='News_ID',@Sort='News_IDDESC',@PageNumber=2,@PageSize=15,@Fields='*',@Group='',@isCount=0
DECLARE@strFiltervarchar(2000)
declare@sqlvarchar(8000)
IF@FilterISNOTNULLAND@Filter!=''
BEGIN
SET@strFilter='WHERE'+@Filter+''
END
ELSE
BEGIN
SET@strFilter=''
END

if@isCount=1--只獲得記錄條數
begin
set@sql='SELECTCount(*)FROM'+@Tables+@strFilter
end
else
begin
if@Sort=''
set@Sort=@PK+'DESC'

IF@PageNumber<1
SET@PageNumber=1

if@PageNumber=1--第一頁提高性能
begin
set@sql='selecttop'+str(@PageSize)+''+@Fields+'from'+@Tables+''+@strFilter+'ORDERBY'+@Sort
end
else
begin
/**//*Executedynamicquery*/
DECLARE@START_IDvarchar(50)
DECLARE@END_IDvarchar(50)
SET@START_ID=convert(varchar(50),(@PageNumber-1)*@PageSize+1)
SET@END_ID=convert(varchar(50),@PageNumber*@PageSize)
set@sql='SELECT'+@Fields+'
FROM(SELECTROW_NUMBER()OVER(ORDERBY'+@Sort+')ASrownum,
'+@Fields+'
FROM'+@Tables+''+@strFilter+')ASD
WHERErownumBETWEEN'+@START_ID+'AND'+@END_ID+'ORDERBY'+@Sort
END

END
--print@sql

EXEC(@sql)

『叄』 如果用sql查詢10000條以上數據用什麼方法查詢

10000條,真的不算多.1千萬條的我都見過,那個查詢一般要跑2-3個小時.
直接用select就可以.如果嫌慢就加個索引.

『肆』 一條查詢千萬級數據的sql語句,正常查詢速度很快,根據其中四個列分組後查詢卻很慢,請問這是為什麼

根據其中四列分組後是需要進行全表掃描4次才能得到而正常查詢掃描一次就可以,所以很慢,可以建索引來實現分組,這樣會加快查詢的。

『伍』 SQL千萬級資料庫模糊查詢問題

%開頭的模糊查詢是沒有辦法使用索引的,怎麼優化都沒有用。

一個建議,就是分析欄位的含義,以及典型的查詢需求,把這個欄位拆分為多個獨立欄位,分別建立索引,這樣查詢才爽。例如你這個數據,看起來是『年月日時分秒』的格式,可以把這些信息分散到年、月、日這樣的欄位裡面,就可以模糊查詢所有年度的【月】或者類似的復雜組合——需要模糊的內容不寫在WHERE裡面即可。

『陸』 怎麼樣提高千萬級SQL資料庫查詢速度

1.對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。

2.應盡量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:

select id from t where num is null

可以在num上設置默認值0,確保表中num列沒有null值,然後這樣查詢:

select id from t where num=0

3.應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。

4.應盡量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,如:

select id from t where num=10 or num=20

可以這樣查詢:

select id from t where num=10

union all

select id from t where num=20

5.in 和 not in 也要慎用,否則會導致全表掃描,如:

select id from t where num in(1,2,3)

對於連續的數值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

6.下面的查詢也將導致全表掃描:

select id from t where name like '%abc%'

若要提高效率,可以考慮全文檢索。