日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

耗时 3 天,上亿数据如何做到秒级查询?

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 耗时 3 天,上亿数据如何做到秒级查询? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在忙著優化集團公司的一個報表。優化完成后,報表查詢速度由從半小時以上(甚至查不出)到秒查的質變。從修改 SQL 查詢語句邏輯到決定創建存儲過程實現,花了我 3 天多的時間,在此總結一下,希望對朋友們有幫助。

數據背景

首先項目是西門子中國在我司實施部署的 MES 項目,由于項目是在產線上運作(3 years+),數據累積很大。

在項目的數據庫中,大概上億條數據的表有 5 個以上,千萬級數據的表 10 個以上,百萬級數據的表,很多…

(歷史問題,當初實施無人監管,無人監控數據庫這塊的性能問題。PS:我剛入職不久…)

不多說,直接貼西門子中國的開發人員在我司開發的 SSRS 報表中的 SQL 語句:

select?distinct?b.MaterialID?as?matl_def_id,?c.Descript,?case?when?right(b.MESOrderID,?12)?<?'001000000000'?then?right(b.MESOrderID,?9) else?right(b.MESOrderID,?12)?end??as?pom_order_id,?a.LotName,?a.SourceLotName?as?ComLot, e.DefID?as?ComMaterials,?e.Descript?as?ComMatDes,?d.VendorID,?d.DateCode,d.SNNote,?b.OnPlantID,a.SNCUST from (select?m.lotname,?m.sourcelotname,?m.opetypeid,?m.OperationDate,n.SNCUST?from?View1?mleft?join?co_sn_link_customer?as?n?on?n.SNMes=m.LotNamewhere(?m.LotName?in?(select?val?from?fn_String_To_Table(@sn,',',1))?or?(@sn)?=?'')?and(?m.sourcelotname?in?(select?val?from?fn_String_To_Table(@BatchID,',',1))?or?(@BatchID)?=?'')and?(n.SNCust?like?'%'+?@SN_ext?+?'%'?or?(@SN_ext)='') )?a left?join (select?*?from?Table1?where?SNType?=?'IntSN'and?SNRuleName?=?'ProductSNRule'and?OnPlantID=@OnPlant )?b?on?b.SN?=?a.LotName inner?join?MMdefinitions?as?c?on?c.DefID?=?b.MaterialID left?join??Table1?as?d?on?d.SN?=?a.SourceLotName inner?join?MMDefinitions?as?e?on?e.DefID?=?d.MaterialID where?not?exists?(select?distinct?LotName,?SourceLotName?from?ELCV_ASSEMBLE_OPS where?LotName?=?a.SourceLotName?and?SourceLotName?=?a.LotName ) and?(d.DateCode?in?(select?val?from?fn_String_To_Table(@DCode,',',1))?or?(@DCode)?=?'') and?(d.SNNote??like?'%'+@SNNote+'%'?or?(@SNNote)?=?'') and?((case?when?right(b.MESOrderID,?12)?<?'001000000000'?then?right(b.MESOrderID,?9) else?right(b.MESOrderID,?12)?end)?in?(select?val?from?fn_String_To_Table(@order_id,',',1))?or?(@order_id)?=?'') and?(e.DefID?in?(select?val?from?fn_String_To_Table(@comdef,',',1))?or?(@comdef)?=?'') --View1是一個嵌套兩層的視圖(出于保密性,實際名稱可能不同),里面有一張上億數據的表和幾張千萬級數據的表做左連接查詢 --Table1是一個數據記錄超過1500萬的表

這個查詢語句,實際上通過我的檢測和調查,在 B/S 系統前端已無法查出結果,半小時,一小時...

因為我直接在 SQL 查詢分析器查,半小時都沒有結果。(原因是里面對一張上億級數據表和 3 張千萬級數據表做全表掃描查詢)

不由感慨,西門子中國的素質(或者說責任感)就這樣?下面說說我的分析和走的彎路(思維誤區),希望對你也有警醒。

推薦一個艿艿寫的 6000+ Star 的 SpringBoot + SpringCloud + Dubbo 教程的倉庫:https://github.com/YunaiV/SpringBoot-Labs

探索和誤區

首先相關表的索引,沒有建全的,把索引給建上。

索引這步完成后,發現情況還是一樣,查詢速度幾乎沒有改善。后來想起相關千萬級數據以上的表,都還沒有建立表分區。于是考慮建立表分區以及數據復制的方案。

這里有必要說明下:?我司報表用的是一個專門的數據庫服務器,數據從產線訂閱而來。就是常說的“讀寫分離”。

如果直接在原表上建立表分區,你會發現執行表分區的事物會直接死鎖。原因是:表分區操作本身會鎖表,產線還在推數據過來,這樣很容易“阻塞”,“死鎖”。

我想好的方案是:建立一個新表(空表),在新表上建好表分區,然后復制數據過來。

正打算這么干。等等!我好像進入了一個嚴重的誤區!

分析:?原 SQL 語句和業務需求,是對產線的數據做產品以及序列號的追溯,關鍵是查詢條件里沒有有規律的”條件”(如日期、編號),貿然做了表分區,在這里幾乎沒有意義!反而會降低查詢性能!

好險!還是一步一步來,先做 SQL 語句分析。

對原 SQL 語句的分析

對原 SQL 語句的分析如下:

  • 查詢語句的 where 條件,有大量 @var in … or (@var =”) 的片段。

  • where 條件有 like ‘%’+@var+’%’。

  • where 條件有 case … end 函數。

  • 多次連接同一表查詢,另外使用本身已嵌套的視圖表,是不是必須,是否可替代?

  • SQL 語句有號,視圖中也有號出現。

優化設計

首先是用存儲過程改寫,好處是設計靈活。

核心思想是:?用一個或多個查詢條件(查詢條件要求至少輸入一個)得到臨時表,每個查詢條件如果查到集合,就更新這張臨時表,最后匯總的時候,只需判斷這個臨時表是否有值。

以此類推,可以建立多個臨時表,將查詢條件匯總。

這樣做目前來看至少兩點好處:

  • 省去了對變量進行 =@var or (@var=”)的判斷。

  • 拋棄 SQL 拼接,提高代碼可讀性。

再有就是在書寫存儲過程,這個過程中要注意:

  • 盡量想辦法使用臨時表掃描替代全表掃描。

  • 拋棄 in 和 not in 語句,使用 exists 和 not exists 替代。

  • 和客戶確認,模糊查詢是否有必要,如沒有必要,去掉 like 語句。

  • 注意建立適當的,符合場景的索引。

  • 踩死 “*” 號。

  • 避免在 where 條件中對字段進行函數操作。

  • 對實時性要求不高的報表,允許臟讀(with(nolock))。

推薦一個艿艿寫的 3000+ Star 的 SpringCloud Alibaba 電商開源項目的倉庫:https://github.com/YunaiV/onemall

存儲過程

如果想參考優化設計片段的詳細內容,請參閱 SQL 代碼:

/***?某某跟蹤報表**/ --exec?spName1?'','','','','','','公司代號' CREATE?Procedure?spName1@MESOrderID?nvarchar(320),?--工單號,最多30個@LotName?nvarchar(700),????--產品序列號,最多50個@DateCode?nvarchar(500),???--供應商批次號,最多30個@BatchID?nvarchar(700),????--組裝件序列號/物料批號,最多50個@comdef?nvarchar(700),?????--組裝件物料編碼,最多30個@SNCust?nvarchar(1600),????--外部序列號,最多50個@OnPlant?nvarchar(20)??????--平臺 AS BEGINSET?NOCOUNT?ON;/***?1)定義全局的臨時表,先根據六個查詢條件的任意一個,得出臨時表結果**/CREATE?TABLE?#FinalLotName(LotName?NVARCHAR(50),???????--序列號SourceLotName?NVARCHAR(50),?--來源序列號SNCust?NVARCHAR(128)????????--外部序列號)--1.1IF?@LotName<>''BEGINSELECT?Val?INTO?#WorkLot?FROM?fn_String_To_Table(@LotName,',',1)SELECT?LotPK,LotName?INTO?#WorkLotPK?FROM?MMLots?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkLot?b?WHERE?b.Val=MMLots.LotID)--求SourceLotPK只能在這里求SELECT?a.LotPK,a.SourceLotPK?into?#WorkSourcePK?FROM?MMLotOperations?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkLotPK?b?WHERE?b.LotPK=a.LotPK)?AND?a.SourceLotPK?IS?NOT?NULLSELECT?a.LotPK,a.SourceLotPK,b.LotName?INTO?#WorkSourcePK2?FROM?#WorkSourcePK?a?JOIN?#WorkLotPK?b?ON?a.LotPK=b.LotPKINSERT?INTO?#FinalLotName?SELECT?a.LotName,b.LotName?AS?SourceLotName,NULL?FROM?#WorkSourcePK2?a?JOIN?(SELECT?LotPK,LotName?FROM?MMLots?WITH(NOLOCK)?)?b?on?a.SourceLotPK=b.LotPK?--b的里面加不加WHERE?RowDeleted=0待確定SELECT?a.LotName,a.SourceLotName,b.SNCust?INTO?#FinalLotNameX1?FROM?#FinalLotName?a?LEFT?JOIN?CO_SN_LINK_CUSTOMER?b?WITH(NOLOCK)?ON?a.LotName=b.SNMesDELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#FinalLotNameX1END--1.2IF?@BatchID<>''BEGINSELECT?Val?INTO?#WorkSourceLot?FROM?fn_String_To_Table(@BatchID,',',1)IF?EXISTS(SELECT?1?FROM?#FinalLotName)--如果@LotName也不為空BEGINSELECT?a.LotName,a.SourceLotName,a.SNCust?INTO?#FinalLotNameX2?FROM?#FinalLotName?a?WHERE?EXISTS(SELECT?1?FROM?#WorkSourceLot?b?WHERE?a.SourceLotName=b.Val)DELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#FinalLotNameX2ENDELSE?--@LotName條件為空BEGINSELECT?LotPK?AS?SourceLotPK,LotName?AS?SourceLotName?INTO?#2?FROM?MMLots?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkSourceLot?b?WHERE?b.Val=MMLots.LotID)SELECT?a.LotPK,a.SourceLotPK?into?#21?FROM?MMLotOperations?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#2?b?WHERE?b.SourceLotPK=a.SourceLotPK)SELECT?a.LotPK,a.SourceLotPK,b.SourceLotName?INTO?#22?FROM?#21?a?JOIN?#2?b?ON?a.SourceLotPK=b.SourceLotPKINSERT?INTO?#FinalLotName?SELECT?b.LotName,a.SourceLotName,NULL?FROM?#22?a?JOIN?(SELECT?LotPK,LotName?FROM?MMLots?WITH(NOLOCK)?)?b?on?a.LotPK=b.LotPK?--b的里面加不加WHERE?RowDeleted=0待確定SELECT?a.LotName,a.SourceLotName,b.SNCust?INTO?#FinalLotNameX21?FROM?#FinalLotName?a?LEFT?JOIN?CO_SN_LINK_CUSTOMER?b?WITH(NOLOCK)?ON?a.LotName=b.SNMesDELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#FinalLotNameX21ENDEND--1.3IF?@SNCust<>''BEGINSELECT?Val?INTO?#WorkCustomSN?FROM?fn_String_To_Table(@SNCust,',',1)IF?EXISTS(SELECT?1?FROM?#FinalLotName)--前面兩個條件至少有一個有值BEGINSELECT?a.LotName,a.SourceLotName,a.SNCust?INTO?#FinalLotNameX3?FROM?#FinalLotName?a?WHERE?EXISTS(SELECT?1?FROM?#WorkCustomSN?b?WHERE?a.SNCust=b.Val)DELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#FinalLotNameX3ENDELSEBEGINSELECT?a.SNMes?INTO?#WorkLotX?FROM?CO_SN_LINK_CUSTOMER?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkCustomSN?b?WHERE?a.SNCust=b.Val)-------------------以下邏輯和變量1(@LotName)類似[先根據外部序列號求解序列號,再照搬第一個判斷變量的方式]SELECT?LotPK,LotName?INTO?#WorkLotPKX?FROM?MMLots?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkLotX?b?WHERE?b.SNMes=MMLots.LotID)--求SourceLotPK只能在這里求SELECT?a.LotPK,a.SourceLotPK?into?#WorkSourcePKX?FROM?MMLotOperations?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkLotPKX?b?WHERE?b.LotPK=a.LotPK)?AND?a.SourceLotPK?IS?NOT?NULLSELECT?a.LotPK,a.SourceLotPK,b.LotName?INTO?#WorkSourcePK2X?FROM?#WorkSourcePKX?a?JOIN?#WorkLotPKX?b?ON?a.LotPK=b.LotPKINSERT?INTO?#FinalLotName?SELECT?a.LotName,b.LotName?AS?SourceLotName,NULL?FROM?#WorkSourcePK2X?a?JOIN?(SELECT?LotPK,LotName?FROM?MMLots?WITH(NOLOCK)?)?b?on?a.SourceLotPK=b.LotPK?--b的里面加不加WHERE?RowDeleted=0待確定SELECT?a.LotName,a.SourceLotName,b.SNCust?INTO?#FinalLotNameX31?FROM?#FinalLotName?a?LEFT?JOIN?CO_SN_LINK_CUSTOMER?b?WITH(NOLOCK)?ON?a.LotName=b.SNMesDELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#FinalLotNameX31-----------------------ENDEND/*** 2)定義全局的臨時表,用于替換第一個全局臨時表。**/CREATE?TABLE?#FinalCO_SN(SN?NVARCHAR(50),SourceSN?NVARCHAR(50),SNCust?NVARCHAR(128),matl_def_id?NVARCHAR(50),--sn的物料IDComMaterials?NVARCHAR(50),??--SourceSN的物料IDMESOrderID?NVARCHAR(20),OnPlantID?NVARCHAR(20),VendorID?NVARCHAR(20),DateCode?NVARCHAR(20)?,SNNote?NVARCHAR(512))--2.1IF?@MESOrderID<>''BEGIN-------------------------------將MESOrderID做特殊處理-----------------------------------SELECT?Val?INTO?#WorkMESOrderID?FROM?fn_String_To_Table(@MESOrderID,',',1)IF?@OnPlant='Comba'BEGINUPDATE?#WorkMESOrderID?SET?Val='C000'+Val?WHERE?LEN(Val)=9ENDELSEBEGINUPDATE?#WorkMESOrderID?SET?Val='W000'+Val?WHERE?LEN(Val)=9ENDSELECT?SN,MaterialID,MESOrderID,OnPlantID?INTO?#WorkCO_SN1?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)WHERE?SNType='IntSN'?AND?SNRuleName?=?'ProductSNRule'?AND?OnPlantID=@OnPlantAND?EXISTS(SELECT?1?FROM?#WorkMESOrderID?b?WHERE?a.MESOrderID=b.Val)--------------------------------------------------------------------------------------------條件判斷(邏輯分析)開始IF?EXISTS(SELECT?1?FROM?#FinalLotName)--如果前面判斷的查詢條件有值BEGIN--查出SourceLotName對應的查詢字段SELECT?a.SN?AS?SourceLotName,a.VendorID,a.DateCode,a.SNNote,a.MaterialID?AS?ComMaterials?INTO?#SourceLotNameTable?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.SourceLotName)INSERT?INTO?#FinalCO_SNSELECT?a.LotName,a.SourceLotName,d.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote?FROM?#FinalLotName?aLEFT?JOIN?#WorkCO_SN1?b?ON?a.LotName=b.SNLEFT?JOIN?#SourceLotNameTable?c?ON?a.SourceLotName=c.SourceLotNameLEFT?JOIN?CO_SN_LINK_CUSTOMER?d?WITH(NOLOCK)?ON?a.LotName=d.SNMesENDELSEBEGIN--已知SN集合求解對應的SourceSN和SNCust集合------------------------------------------SELECT?LotPK,LotName?INTO?#WorkLotPK410?FROM?MMLots?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkCO_SN1?b?WHERE?b.SN=MMLots.LotID)SELECT?a.LotPK,a.SourceLotPK?into?#WorkSourcePK420?FROM?MMLotOperations?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkLotPK410?b?WHERE?b.LotPK=a.LotPK)?AND?a.SourceLotPK?IS?NOT?NULLSELECT?a.LotPK,a.SourceLotPK,b.LotName?INTO?#WorkSourcePK430?FROM?#WorkSourcePK420?a?JOIN?#WorkLotPK410?b?ON?a.LotPK=b.LotPKINSERT?INTO?#FinalLotName?SELECT?a.LotName,b.LotName?AS?SourceLotName,NULL?FROM?#WorkSourcePK430?a?JOIN?(SELECT?LotPK,LotName?FROM?MMLots?WITH(NOLOCK)?)?b?on?a.SourceLotPK=b.LotPK?--b的里面加不加WHERE?RowDeleted=0待確定SELECT?a.LotName,a.SourceLotName,b.SNCust?INTO?#FinalLotNameX440?FROM?#FinalLotName?a?LEFT?JOIN?CO_SN_LINK_CUSTOMER?b?WITH(NOLOCK)?ON?a.LotName=b.SNMesDELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#FinalLotNameX440-------------------------------------------------------------------------------------SELECT?a.SN?AS?SourceLotName,a.VendorID,a.DateCode,a.SNNote,a.MaterialID?AS?ComMaterials?INTO?#SourceLotNameTable2?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.SourceLotName)INSERT?INTO?#FinalCO_SNSELECT?a.LotName,a.SourceLotName,a.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote?FROM?#FinalLotName?aLEFT?JOIN?#WorkCO_SN1?b?ON?a.LotName=b.SNLEFT?JOIN?#SourceLotNameTable2?c?ON?a.SourceLotName=c.SourceLotNameENDEND--2.2IF?@DateCode<>''BEGINSELECT?Val?INTO?#WorkDateCode?FROM?fn_String_To_Table(@DateCode,',',1)--此@DataCode條件求解出來的是SourceSNSELECT?SN?AS?SourceSN,MaterialID?AS?ComMaterials,VendorID,DateCode,SNNote?INTO?#WorkSourceSNT1?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkDateCode?b?WHERE?a.DateCode=b.Val)------------------------------------------------------------------------------------------------------條件判斷(邏輯分析)開始IF?EXISTS(SELECT?1?FROM?#FinalCO_SN)--如果前面判斷的查詢條件有值BEGINSELECT?a.LotName,a.SourceLotName,a.SNCust,a.MaterialID,a.ComMaterials,a.MESOrderID,a.OnPlantID,a.VendorID,a.DateCode,a.SNNote?INTO?#TMP51?FROM?#FinalCO_SN?a?WHERE?EXISTS?(SELECT?1?FROM?#WorkDateCode?b?WHERE?a.DateCode=b.Val)DELETE?FROM?#FinalCO_SNINSERT?INTO?#FinalCO_SN?SELECT?LotName,SourceLotName,SNCust,MaterialID,ComMaterials,MESOrderID,OnPlantID,VendorID,DateCode,SNNote?FROM?#TMP51ENDELSEBEGINIF?EXISTS(SELECT?1?FROM?#FinalLotName)BEGIN--查出SourceLotName對應的查詢字段SELECT?a.SourceSN,a.VendorID,a.DateCode,a.SNNote,a.ComMaterials?INTO?#SourceLTX5?FROM?#WorkSourceSNT1?a?WHERE?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SourceSN=b.SourceLotName)--查出SN對應的查詢字段SELECT?SN,MaterialID,MESOrderID,OnPlantID?INTO?#WorkSNT510?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)WHERE?SNType='IntSN'?AND?SNRuleName?=?'ProductSNRule'?AND?OnPlantID=@OnPlantAND?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.LotName)INSERT?INTO?#FinalCO_SNSELECT?a.LotName,a.SourceLotName,d.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote?FROM?#FinalLotName?aLEFT?JOIN?#WorkSNT510?b?ON?a.LotName=b.SNLEFT?JOIN?#WorkSourceSNT1?c?ON?a.SourceLotName=c.SourceSNLEFT?JOIN?CO_SN_LINK_CUSTOMER?d?WITH(NOLOCK)?ON?a.LotName=d.SNMesENDELSEBEGIN--已知SourceSN集合求解對應的SN和SNCust集合------------------------------------------SELECT?LotPK?AS?SourceLotPK,LotName?AS?SrouceLotName?INTO?#WorkLotX510?FROM?MMLots?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkSourceSNT1?b?WHERE?b.SourceSN=MMLots.LotID)SELECT?a.LotPK,a.SourceLotPK?into?#WorkLotX520?FROM?MMLotOperations?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkLotX510?b?WHERE?b.SourceLotPK=a.SourceLotPK)SELECT?a.LotPK,a.SourceLotPK,b.SrouceLotName?INTO?#WorkLotX530?FROM?#WorkLotX520?a?JOIN?#WorkLotX510?b?ON?a.SourceLotPK=b.SourceLotPKINSERT?INTO?#FinalLotName?SELECT?b.LotName,a.SrouceLotName,NULL?FROM?#WorkLotX530?a?JOIN?(SELECT?LotPK,LotName?FROM?MMLots?WITH(NOLOCK)?)?b?on?a.LotPK=b.LotPK?--b的里面加不加WHERE?RowDeleted=0待確定SELECT?a.LotName,a.SourceLotName,b.SNCust?INTO?#WorkLotX540?FROM?#FinalLotName?a?LEFT?JOIN?CO_SN_LINK_CUSTOMER?b?WITH(NOLOCK)?ON?a.LotName=b.SNMesDELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#WorkLotX540-------------------------------------------------------------------------------------SELECT?SN,MaterialID,MESOrderID,OnPlantID?INTO?#WorkLotX550?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)WHERE?SNType='IntSN'?AND?SNRuleName?=?'ProductSNRule'?AND?OnPlantID=@OnPlantAND?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.LotName)INSERT?INTO?#FinalCO_SNSELECT?a.LotName,a.SourceLotName,a.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote?FROM?#FinalLotName?aLEFT?JOIN?#WorkLotX550?b?ON?a.LotName=b.SNLEFT?JOIN?#WorkSourceSNT1?c?ON?a.SourceLotName=c.SourceSNENDENDEND--2.3IF?@comdef<>''BEGINSELECT?Val?INTO?#WorkComdef?FROM?fn_String_To_Table(@comdef,',',1)--此@comdef條件求解出來的是SourceSNSELECT?SN?AS?SourceSN,MaterialID?AS?ComMaterials,VendorID,DateCode,SNNote?INTO?#WorkSourceSNT16?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkComdef?b?WHERE?a.MaterialID=b.Val)------------------------------------------------------------------------------------------------------條件判斷(邏輯分析)開始IF?EXISTS(SELECT?1?FROM?#FinalCO_SN)--如果前面判斷的查詢條件有值BEGINSELECT?a.LotName,a.SourceLotName,a.SNCust,a.MaterialID,a.ComMaterials,a.MESOrderID,a.OnPlantID,a.VendorID,a.DateCode,a.SNNote?INTO?#TMP516?FROM?#FinalCO_SN?a?WHERE?EXISTS?(SELECT?1?FROM?#WorkComdef?b?WHERE?a.matl_def_id=b.Val)DELETE?FROM?#FinalCO_SNINSERT?INTO?#FinalCO_SN?SELECT?LotName,SourceLotName,SNCust,MaterialID,ComMaterials,MESOrderID,OnPlantID,VendorID,DateCode,SNNote?FROM?#TMP516ENDELSEBEGINIF?EXISTS(SELECT?1?FROM?#FinalLotName)BEGIN--查出SourceLotName對應的查詢字段SELECT?a.SourceSN,a.VendorID,a.DateCode,a.SNNote,a.ComMaterials?INTO?#SourceLTX56?FROM?#WorkSourceSNT16?a?WHERE?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SourceSN=b.SourceLotName)--查出SN對應的查詢字段SELECT?SN,MaterialID,MESOrderID,OnPlantID?INTO?#WorkSNT5106?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)WHERE?SNType='IntSN'?AND?SNRuleName?=?'ProductSNRule'?AND?OnPlantID=@OnPlantAND?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.LotName)INSERT?INTO?#FinalCO_SNSELECT?a.LotName,a.SourceLotName,d.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote?FROM?#FinalLotName?aLEFT?JOIN?#WorkSNT5106?b?ON?a.LotName=b.SNLEFT?JOIN?#WorkSourceSNT16?c?ON?a.SourceLotName=c.SourceSNLEFT?JOIN?CO_SN_LINK_CUSTOMER?d?WITH(NOLOCK)?ON?a.LotName=d.SNMesENDELSEBEGIN--已知SourceSN集合求解對應的SN和SNCust集合------------------------------------------SELECT?LotPK?AS?SourceLotPK,LotName?AS?SrouceLotName?INTO?#WorkLotX5106?FROM?MMLots?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkSourceSNT16?b?WHERE?b.SourceSN=MMLots.LotID)SELECT?a.LotPK,a.SourceLotPK?into?#WorkLotX5206?FROM?MMLotOperations?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#WorkLotX5106?b?WHERE?b.SourceLotPK=a.SourceLotPK)SELECT?a.LotPK,a.SourceLotPK,b.SrouceLotName?INTO?#WorkLotX5306?FROM?#WorkLotX5206?a?JOIN?#WorkLotX5106?b?ON?a.SourceLotPK=b.SourceLotPKINSERT?INTO?#FinalLotName?SELECT?b.LotName,a.SrouceLotName,NULL?FROM?#WorkLotX5306?a?JOIN?(SELECT?LotPK,LotName?FROM?MMLots?WITH(NOLOCK)?)?b?on?a.LotPK=b.LotPK?--b的里面加不加WHERE?RowDeleted=0待確定SELECT?a.LotName,a.SourceLotName,b.SNCust?INTO?#WorkLotX5406?FROM?#FinalLotName?a?LEFT?JOIN?CO_SN_LINK_CUSTOMER?b?WITH(NOLOCK)?ON?a.LotName=b.SNMesDELETE?FROM?#FinalLotNameINSERT?INTO?#FinalLotName?SELECT?LotName,SourceLotName,SNCust?FROM?#WorkLotX5406-------------------------------------------------------------------------------------SELECT?SN,MaterialID,MESOrderID,OnPlantID?INTO?#WorkLotX5506?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)WHERE?SNType='IntSN'?AND?SNRuleName?=?'ProductSNRule'?AND?OnPlantID=@OnPlantAND?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.LotName)INSERT?INTO?#FinalCO_SNSELECT?a.LotName,a.SourceLotName,a.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote?FROM?#FinalLotName?aLEFT?JOIN?#WorkLotX5506?b?ON?a.LotName=b.SNLEFT?JOIN?#WorkSourceSNT16?c?ON?a.SourceLotName=c.SourceSNENDENDEND/***?3)條件判斷結束**/IF?EXISTS(SELECT?1?FROM?#FinalLotName)BEGINIF?EXISTS(SELECT?1?FROM?#FinalCO_SN)BEGIN--3.1SELECT?a.matl_def_id,b.Descript,a.MESOrderID?AS?pom_order_id,a.SN?AS?LotName,a.SourceSN?AS?ComLot,a.ComMaterials,c.Descript?AS?ComMatDes,a.VendorID,a.DateCode,a.SNNote,OnPlantID,SNCust?FROM?#FinalCO_SN?aJOIN?MMDefinitions?b?WITH(NOLOCK)?ON?a.matl_def_id=b.DefIDJOIN?MMDefinitions?c?WITH(NOLOCK)?ON?a.ComMaterials=c.DefIDWHERE?NOT?EXISTS(select?distinct?SN,?SourceSN?from?#FinalCO_SN?xwhere?x.SN?=?a.SourceSN?and?x.SourceSN?=?a.SN)ENDELSEBEGIN--3.2--3.2.1求解SN的必查字段SELECT?SN,MaterialID,MESOrderID,OnPlantID?INTO?#FinalSNX1?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)WHERE?SNType='IntSN'?AND?SNRuleName?=?'ProductSNRule'?AND?OnPlantID=@OnPlantAND?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.LotName)--3.2.2求解SourceSN的必查字段SELECT?a.SN?AS?SourceLotName,a.VendorID,a.DateCode,a.SNNote,a.MaterialID?AS?ComMaterials?INTO?#FinalSNX2?FROM?CO_SN_GENERATION?a?WITH(NOLOCK)?WHERE?EXISTS(SELECT?1?FROM?#FinalLotName?b?WHERE?a.SN=b.SourceLotName)SELECT?b.MaterialID?AS?matl_def_id,x.Descript,b.MESOrderID?AS?pom_order_id,b.SN?AS?LotName,c.SourceLotName?AS?ComLot,c.ComMaterials,y.Descript?AS?ComMatDes,c.VendorID,c.DateCode,c.SNNote,b.OnPlantID,a.SNCustFROM?#FinalLotName?aLEFT?JOIN?#FinalSNX1?b?ON?a.LotName=b.SNLEFT?JOIN?#FinalSNX2?c?ON?a.SourceLotName=c.SourceLotNameJOIN?MMDefinitions?x?WITH(NOLOCK)?ON?b.MaterialID=x.DefIDJOIN?MMDefinitions?y?WITH(NOLOCK)?ON?c.ComMaterials=y.DefIDWHERE?NOT?EXISTS(SELECT?DISTINCT?*?FROM?#FinalLotName?zWHERE?z.LotName=a.SourceLotName?and?z.SourceLotName=a.LotName)ENDENDELSEBEGINIF?EXISTS(SELECT?1?FROM?#FinalCO_SN)BEGIN--3.3SELECT?a.matl_def_id,b.Descript,a.MESOrderID?AS?pom_order_id,a.SN?AS?LotName,a.SourceSN?AS?ComLot,a.ComMaterials,c.Descript?AS?ComMatDes,a.VendorID,a.DateCode,a.SNNote,OnPlantID,SNCust?FROM?#FinalCO_SN?aJOIN?MMDefinitions?b?WITH(NOLOCK)?ON?a.matl_def_id=b.DefIDJOIN?MMDefinitions?c?WITH(NOLOCK)?ON?a.ComMaterials=c.DefIDWHERE?NOT?EXISTS(select?distinct?SN,?SourceSN?from?#FinalCO_SN?xwhere?x.SN?=?a.SourceSN?and?x.SourceSN?=?a.SN)ENDELSEBEGIN--3.4PRINT?'There?is?no?queryable?condition,please?enter?at?less?a?query?conditon.'ENDENDEND GO

雖然犧牲了代碼的可讀性,但創造了性能價值。本人水平有限,還請各位不吝賜教!

最后,將 SSRS 報表替換成此存儲過程后,SQL 查詢分析器是秒查的。B/S 前端用時 1~2 秒!

總結

平常的你是否偶爾會因急于完成任務而書寫一堆性能極低的 SQL 語句呢?寫出可靠性能的 SQL 語句不難,難的是習慣。

本文的優化思想很簡單,關鍵點是避免全表掃描&注重 SQL 語句寫法&索引。

另外,如果你查詢的表有可能會在查詢時段更新,而實際業務需求允許臟讀,可加 with(nolock)預防查詢被更新事物阻塞。

總結

以上是生活随笔為你收集整理的耗时 3 天,上亿数据如何做到秒级查询?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

色视频在线观看 | 夜夜躁日日躁狠狠久久88av | 992tv在线成人免费观看 | 五月天久久精品 | 国产在线精品一区二区三区 | 美女久久久久久久久久 | 国产黄影院色大全免费 | 亚洲精品国产第一综合99久久 | 欧美日韩视频网站 | 精品久久久久久久久久久久久久久久久久 | 日韩精品一区二区免费视频 | 色是在线视频 | 日韩系列在线观看 | 中文字幕在线观看第三页 | 日韩中文字幕视频在线 | 五月婷婷开心中文字幕 | 美女禁18| 在线观看国产区 | 久久久久中文 | 91色综合| 国产无套一区二区三区久久 | 日本精品在线 | 日韩精品三区四区 | 久久久亚洲电影 | 日韩精品久久久久 | 99久久精品国产一区 | 最近日本mv字幕免费观看 | 操久在线 | 成人在线一区二区三区 | 深夜免费福利网站 | 精品伊人久久久 | 欧美久久综合 | 亚洲第一区在线观看 | 狠狠色狠狠色综合系列 | 久久视频免费 | 又湿又紧又大又爽a视频国产 | 国产精品久久久久久久7电影 | 97人人精品 | 久久免费99精品久久久久久 | 免费看国产曰批40分钟 | 欧美精品你懂的 | 日韩高清在线看 | 国产精品自产拍 | 激情欧美日韩一区二区 | 成人精品一区二区三区中文字幕 | 中文字幕在线观看第一页 | 国产免费观看高清完整版 | 国产中文字幕视频在线观看 | 国产在线播放一区 | 亚洲伦理一区二区 | 久久国产亚洲精品 | 六月婷操 | 国产精品s色 | 精品毛片一区二区免费看 | 91福利免费 | 欧美一区二区在线刺激视频 | 久久久久久久久黄色 | 中文伊人 | 人人添人人澡人人澡人人人爽 | 中文字幕在线观看播放 | 欧美日本中文字幕 | 91av中文字幕 | 视频在线亚洲 | 国产玖玖在线 | 怡红院成人在线 | 天天操天天射天天操 | 国产不卡免费 | 欧美一级视频免费看 | 国产1级毛片| 天天干天天射天天插 | 久草在线99 | av视屏在线| 午夜精品av| 97日日| 国产精品18videosex性欧美 | 久久精品99国产 | 国产黄色免费 | 国产九九精品视频 | av黄色在线播放 | 久久精品美女 | 天天爱天天爽 | 日韩欧美视频免费观看 | a天堂在线看 | 最新日韩视频 | 天天躁日日 | а中文在线天堂 | 91片网| 中文字幕第 | 日韩电影精品 | 天天综合网~永久入口 | 国产午夜精品一区二区三区欧美 | 精品国产激情 | 日日碰狠狠添天天爽超碰97久久 | 久久69av | av成人在线播放 | 91精品国产99久久久久 | 欧美性生活久久 | 色永久免费视频 | 在线观看黄色的网站 | 美女福利视频 | 久久涩视频 | 天天操天天操 | 2019精品手机国产品在线 | 久久久久久久久精 | 久久国产精彩视频 | 成人午夜免费福利 | 91爱在线| 国产福利一区在线观看 | 日韩欧美有码在线 | 国产va在线 | 欧美少妇18p | 午夜精品一区二区三区在线观看 | 久久午夜网 | 久草视频在线资源站 | 97成人精品视频在线播放 | 91成人免费在线视频 | 久久蜜臀一区二区三区av | 天天射成人 | 青青久草在线视频 | 日韩欧美不卡 | 久久久精品国产一区二区电影四季 | 91久久精品一区二区二区 | 国产字幕在线播放 | 国产成人一二片 | 999视频在线观看 | 国产小视频在线观看 | 91片黄在线观看动漫 | 日日爽天天操 | 国产亚洲精品美女 | 国产成人一区二区啪在线观看 | 亚洲高清视频在线播放 | 69精品视频在线观看 | 婷婷丁香狠狠爱 | 国产成人99久久亚洲综合精品 | 色人久久 | 欧美一区三区四区 | 日本黄色大片免费 | 免费日韩av电影 | 久久ww| 五月婷婷丁香色 | 亚洲va欧洲va国产va不卡 | 97免费视频在线 | 中文字幕91在线 | 五月婷婷丁香 | 欧美日本高清视频 | 91精选在线 | 国产亚洲精品久久 | 人人干在线 | 日韩免费在线观看视频 | 久久久受www免费人成 | 婷婷色婷婷 | 婷婷六月天在线 | 免费看黄视频 | 黄色小说在线观看视频 | 制服丝袜一区二区 | 欧美日韩xxxxx | 99视| 久久成人精品电影 | 成人久久精品视频 | 成人h动漫精品一区二 | 97在线观看免费高清 | av大片免费在线观看 | 久久99热精品这里久久精品 | 天天操天天操天天操天天 | 亚洲在线视频观看 | 不卡的av电影在线观看 | 亚洲免费婷婷 | 99久久久精品 | 97超碰.com| 精品高清美女精品国产区 | 久久久高清 | 久久久精品在线观看 | 国产精品一区二区在线观看 | 中文字幕视频三区 | 欧美久久久久久久久久久 | 国产高清视频在线播放 | 亚洲va欧洲va国产va不卡 | 免费一级黄色 | 黄色网址在线播放 | 一区二区成人国产精品 | 婷婷久月 | 中文字幕免费中文 | 久久极品 | 国产91九色视频 | 在线视频专区 | 伊人首页| 国产精品一区电影 | 中文字幕精品一区二区三区电影 | 激情五月婷婷激情 | 99精品在线免费视频 | 99久久婷婷国产一区二区三区 | 亚洲成aⅴ人片久久青草影院 | 国产不卡在线播放 | 四虎影视成人永久免费观看亚洲欧美 | 亚洲区精品 | 成人在线视频观看 | 国产夫妻自拍av | 日韩av高清 | 国产一区二区三区高清播放 | 国产视频在线播放 | 六月丁香激情综合色啪小说 | 五月婷婷六月综合 | 久久精品综合一区 | 91看片在线观看 | 国产日韩视频在线观看 | 久久精品观看 | 四虎影视成人永久免费观看视频 | 久久精品直播 | 黄色电影在线免费观看 | 日日夜夜精品免费 | 精品二区视频 | 国精产品满18岁在线 | 91视频免费网址 | 精品亚洲免费 | 久久久国产精品视频 | 色激情五月 | 久久精品—区二区三区 | 欧美激情综合网 | 国产区免费在线 | 91成人免费观看视频 | 久草免费在线视频观看 | 色综合综合 | 欧美日本不卡 | 久草观看视频 | 91亚洲精品久久久中文字幕 | 中文字幕资源网 | 国产综合福利在线 | 久久精品男人的天堂 | 亚洲婷婷伊人 | 久久国产精品成人免费浪潮 | 亚洲午夜久久久综合37日本 | 一区二区三区精品在线视频 | 69xxxx欧美| 日本久久久影视 | av免费观看在线 | 五月婷婷导航 | 九九色视频 | a精品视频| 色婷婷伊人| 亚洲一区二区麻豆 | 91免费高清视频 | 亚洲精品456在线播放乱码 | 亚洲精品小视频 | 99视频一区二区 | 久久久国产精品成人免费 | 欧美性生活一级片 | 亚洲国产影院 | 日免费视频 | 国产精品国产毛片 | 久久久久久久国产精品 | 97自拍超碰 | 久久中文字幕视频 | 亚洲国产免费av | 91在线看片 | 久草免费在线观看视频 | 日本公乱妇视频 | 日韩一级电影网站 | 日p视频在线观看 | aaa黄色毛片 | 天天干天天干天天 | 国产日韩欧美在线看 | 国产在线国产 | 99久久er热在这里只有精品66 | 9在线观看免费高清完整 | 天堂在线一区二区 | 国产精品成人av电影 | 免费观看性生交 | 国产第一页在线观看 | 国语精品免费视频 | 午夜精品久久一牛影视 | 欧美日韩三级在线观看 | 夜夜夜夜操 | 国产日韩视频在线播放 | 操老逼免费视频 | 在线国产黄色 | 久久激情网站 | 精品视频免费观看 | 草草草影院 | 麻豆91网站 | 18国产精品白浆在线观看免费 | 中文字幕在线观看一区 | 国产精品久久一区二区三区, | 久草网站在线 | 综合久色| 国产不卡在线观看视频 | 久久99精品热在线观看 | www夜夜操 | 久久99久| 亚欧洲精品视频在线观看 | 91精品国产99久久久久久红楼 | 久草在线费播放视频 | 黄色精品免费 | 97成人免费视频 | 亚洲国产免费网站 | 色综合天天狠天天透天天伊人 | 久久激情视频网 | 最新免费中文字幕 | 欧美韩日精品 | 成人免费在线视频观看 | 97国产大学生情侣白嫩酒店 | 热久久最新地址 | 日本中文在线观看 | 欧美日韩国产在线观看 | 青青草国产精品 | 国产午夜不卡 | 亚洲精品色婷婷 | 国产高清福利在线 | 国产在线观看你懂得 | 精品国模一区二区三区 | 激情小说久久 | 天天狠狠操| 999久久久久久久久久久 | 香蕉视频在线免费 | 久久久www成人免费精品张筱雨 | 精品日韩视频 | 中文字幕日韩精品有码视频 | 国产成人三级在线观看 | 日韩色高清 | 欧美日韩一区二区三区在线免费观看 | 久久久久麻豆v国产 | 蜜桃av人人夜夜澡人人爽 | 五月婷亚洲| 日韩精品免费一区二区 | 亚洲福利精品 | 青青河边草免费观看完整版高清 | 亚洲精品国产综合99久久夜夜嗨 | 免费网站看v片在线a | 久久人人爽人人爽人人 | 国产精品美女久久久久久久久 | 在线观看的黄色 | 亚洲另类视频在线观看 | 久久99网站 | 97在线看片 | 成人国产精品电影 | 极品久久久 | 一级片免费观看视频 | 国产精品 日韩精品 | 日韩在线观看视频网站 | 精品高清视频 | 国产一区二区中文字幕 | 高清免费在线视频 | 在线观看成人网 | 精品一区二区久久久久久久网站 | 久久久高清免费视频 | 天天激情在线 | 91一区二区三区久久久久国产乱 | 在线视频黄 | 国产精品无av码在线观看 | 色爱区综合激月婷婷 | 人人干人人做 | 久久精品视 | 干干操操 | 欧美久久久久久久久久久久久 | 日本性生活一级片 | 九九免费在线观看 | 亚洲jizzjizz日本少妇 | 久久久久在线观看 | 精品一区二区免费在线观看 | 91九色在线视频 | 天天鲁天天干天天射 | 国产福利免费在线观看 | 久久五月天综合 | 91看片看淫黄大片 | av综合网址 | 日韩一区二区三区免费视频 | 中国一级片免费看 | av电影中文字幕在线观看 | 成人久久久久久久久久 | 人人爽人人看 | www黄色软件 | 日韩理论片| 日韩在线国产精品 | 丁香五月亚洲综合在线 | 人人狠狠综合久久亚洲婷 | 日日夜夜国产 | 日韩最新理论电影 | 精品一区二区免费在线观看 | 国产精品一区二区久久国产 | av电影在线观看完整版一区二区 | 日韩理论电影网 | 中文在线中文资源 | 久久久免费观看完整版 | 免费高清在线观看电视网站 | 在线观看午夜 | 国产午夜三级一区二区三 | 综合天天网 | 中文字幕有码在线播放 | 91精品系列 | 夜夜躁日日躁狠狠久久av | 日本中文字幕在线视频 | 国产精品综合久久久久 | 蜜桃视频色| 久草精品在线播放 | 精品视频www | 久久久久久久久久伊人 | 九七人人干 | 久久手机精品视频 | 最近日本韩国中文字幕 | 2019中文字幕网站 | 开心激情婷婷 | 亚洲国产日韩欧美 | 麻豆国产精品永久免费视频 | 美女在线观看av | 超碰人在线 | 精品一二三四视频 | 国产91学生粉嫩喷水 | 视频在线一区 | 欧美日韩在线观看一区二区 | 国产在线播放一区二区 | 国产伦精品一区二区三区免费 | 日韩av成人在线观看 | 午夜婷婷在线观看 | 91欧美视频网站 | 日韩av区| 国产亚洲免费观看 | 国产原创91 | 青青久草在线 | 国产精品扒开做爽爽的视频 | 中文字幕精品一区 | 国产黄色在线看 | 天天操天天摸天天爽 | 精品久久中文 | 久久国产精品二国产精品中国洋人 | 精品一二三四在线 | 国产精品麻豆三级一区视频 | 中文字幕一区二区三区精华液 | 亚洲精品伦理在线 | 久草视频免费播放 | 国产精品色视频 | 中文国产成人精品久久一 | av资源网在线播放 | 国产永久免费高清在线观看视频 | 天堂资源在线观看视频 | 在线观看视频99 | 亚洲h在线播放在线观看h | 中文字幕日韩伦理 | 91av官网 | 97精品久久 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 少妇精69xxtheporn| 天天艹天天干天天 | 日韩av中文 | 久久综合免费视频 | 中文字幕在线观看av | 亚洲高清国产视频 | 在线播放 日韩专区 | 精品久久网 | 中文字幕亚洲精品在线观看 | 亚洲视频精品在线 | 亚洲国产激情 | 日韩精品一区二区三区视频播放 | 精品视频国产 | 在线观看中文字幕一区 | 色干干 | 国产精品伦一区二区三区视频 | 中文字幕在线观看免费观看 | 日本xxxx.com | 操少妇视频 | 在线免费高清 | 去看片 | 日韩视频免费观看高清完整版在线 | 欧美一级大片在线观看 | 成年人视频免费在线播放 | 91精品在线观看视频 | 日日爽天天 | 精品嫩模福利一区二区蜜臀 | 99国产成+人+综合+亚洲 欧美 | 一区二区三区在线看 | 久久看毛片 | 欧美日韩国产区 | 日韩av一区二区三区 | 日本亚洲国产 | 天天操夜夜操夜夜操 | 日日弄天天弄美女bbbb | 日韩r级电影在线观看 | 一级片免费视频 | 日韩av成人在线观看 | 日本黄色黄网站 | 国产高清在线看 | 在线观看视频在线 | 中文字幕视频一区二区 | 成人午夜电影在线播放 | 日韩欧美精品在线观看 | 国产aa精品 | www久久精品 | 亚洲色图 校园春色 | 国产日本亚洲高清 | 中文字幕视频网站 | 毛片3 | 免费视频久久 | 亚洲欧洲国产视频 | 国产成人一区二区在线观看 | 成人国产精品电影 | 99亚洲精品视频 | 欧美日韩调教 | 欧美日韩高清不卡 | 日韩精品一区二 | 深爱婷婷久久综合 | 日韩在线播放av | 久久久久国产精品视频 | 欧美日韩中文另类 | 三级av免费观看 | 91手机在线看片 | 日本丶国产丶欧美色综合 | 日韩网站免费观看 | 亚洲免费色 | 国产免费观看久久 | 亚洲国产av精品毛片鲁大师 | 青青河边草观看完整版高清 | 亚洲高清视频在线 | 亚洲一区免费在线 | 五月婷婷丁香六月 | www操操| 一区二区三高清 | 亚洲精品国产精品国自产观看浪潮 | 蜜臀av夜夜澡人人爽人人桃色 | www.亚洲视频 | 久久免费高清视频 | 久久久久久久看片 | 视频91在线 | 在线有码中文字幕 | 超碰在线网 | 日韩手机视频 | 色婷婷综合久久久中文字幕 | 国产区欧美| 一本一本久久a久久精品综合妖精 | 日韩av进入 | 精品日韩中文字幕 | 一区在线观看视频 | 久久福利综合 | 夜夜夜影院 | 麻豆免费在线播放 | 日本不卡123区 | 中文字幕高清在线播放 | 国产精品毛片一区视频播不卡 | 久久精品久久久久电影 | 久久欧美视频 | 深夜福利视频一区二区 | 中文字幕资源站 | 99精品黄色片免费大全 | 最近2019年日本中文免费字幕 | 在线观看国产高清视频 | 一区二区视频在线看 | 欧美日韩中文国产一区发布 | 中文av日韩| 美女视频a美女大全免费下载蜜臀 | 久久久久久久久黄色 | 99久久99热这里只有精品 | 国产一区 在线播放 | 日韩在线观看高清 | 天天射综合网站 | 亚洲天天在线日亚洲洲精 | 国产精品女同一区二区三区久久夜 | 国产91在线观看 | 成人三级网站在线观看 | 综合色久 | 久久avav| 亚洲成人精品在线观看 | 99视频精品免费视频 | 欧美 日韩 国产 中文字幕 | 国产在线污 | 国产v亚洲v | 免费看特级毛片 | 久久免费在线观看 | a黄色片| 激情综合六月 | 日韩av不卡在线观看 | 久久精彩视频 | 日韩在线不卡av | 久久久资源 | 久久久久国产精品免费 | 手机看国产毛片 | 成人avav | 狠狠躁夜夜av | 97天堂| 在线成人一区二区 | 免费在线观看日韩视频 | 国内丰满少妇猛烈精品播放 | 日韩av中文字幕在线免费观看 | 免费精品国产va自在自线 | 免费福利在线播放 | 91久久偷偷做嫩草影院 | 婷香五月 | 激情五月婷婷丁香 | 日本激情中文字幕 | 成人av在线影视 | 五月天网站在线 | 高清中文字幕 | 激情欧美丁香 | 看片网站黄 | 狠狠狠色丁香婷婷综合激情 | 天天草天天爽 | 91九色在线观看视频 | 在线观看国产亚洲 | 久久伊人八月婷婷综合激情 | 黄a网| 狠狠操影视 | 国产高清在线免费视频 | 成年人免费在线播放 | 免费国产在线视频 | 亚洲第一av在线 | 欧美日韩一区二区三区在线免费观看 | 中文字幕av全部资源www中文字幕在线观看 | 国产精品理论片在线观看 | a√天堂资源| 久久精品成人欧美大片古装 | 久久久国产一区二区三区 | 在线观看视频亚洲 | 久久毛片视频 | 视频三区| 中文字幕一区二区三区久久 | 99视频在线精品国自产拍免费观看 | www色网站| 97人人模人人爽人人少妇 | 欧美成人h版在线观看 | av中文字幕在线观看网站 | 久草网在线观看 | 美女网站一区 | 久久免费视频4 | 六月丁香六月婷婷 | 最新国产精品久久精品 | 成人亚洲精品国产www | 国产成人一区二区在线观看 | 精品国产观看 | 91污视频在线 | 成人午夜在线观看 | 91污污视频在线观看 | 欧美一区免费在线观看 | 99精品免费久久久久久久久日本 | 黄色电影网站在线观看 | 激情视频一区 | 国产成人精品av在线观 | 国产韩国精品一区二区三区 | 免费看三级黄色片 | 91丨九色丨国产女 | 91在线视频导航 | 免费一级特黄录像 | 免费观看性生活大片 | 精品久久网 | 久久久久久久久久久免费av | 91视频在线看 | 国产精品美女久久久免费 | 国产一级片播放 | a黄色片在线观看 | 国产中文字幕在线 | av中文字幕剧情 | 国产婷婷精品 | 精品一区三区 | 免费在线成人av | 九色视频网站 | 免费欧美精品 | av视屏在线播放 | 亚洲国产精品一区二区尤物区 | 国产91粉嫩白浆在线观看 | 国产在线欧美 | 五月婷婷一区二区三区 | 婷婷 综合 色| 国产福利在线不卡 | 久草久草视频 | 午夜久久久久久久久久久 | 中文字幕二区在线观看 | 丁香婷婷成人 | 涩涩网站在线播放 | 国产激情电影综合在线看 | 日本中文字幕电影在线免费观看 | 精品免费| 久久久久久久影院 | 久久久91精品国产一区二区精品 | 国产精品mm| 国产h在线播放 | 在线天堂视频 | 国产在线成人 | 亚洲精品久久久久久久不卡四虎 | 国产美女网 | 国产精品久久久影视 | 色多多在线观看 | 亚洲va欧美va人人爽春色影视 | 欧美最猛性xxxxx免费 | 99视频+国产日韩欧美 | 91插插影库 | 不卡精品视频 | 最新在线你懂的 | 成人a视频| 亚洲精品高清在线观看 | bbw av| 久久激情视频网 | 日本在线免费看 | 男女啪啪免费网站 | 亚洲精品综合在线观看 | 婷婷在线播放 | 97精品伊人| 在线亚洲欧美视频 | 久久九九久久精品 | 日韩免费成人av | 又大又硬又黄又爽视频在线观看 | www国产精品com | 国产99在线免费 | 日日爱网站 | 中文伊人 | 中文字幕一区二区三区四区视频 | 欧美性极品xxxx做受 | 天天射天天爱天天干 | 午夜精品一区二区三区在线播放 | 成人免费观看视频网站 | 中文字幕在线国产 | www.少妇 | 久久免费片 | 婷婷在线网 | 日日夜夜免费精品 | 国产视频一区在线 | 福利视频 | 久久99精品国产99久久6尤 | 久久久精品久久日韩一区综合 | 成人免费在线播放视频 | 久久久激情网 | 欧美日韩免费一区二区三区 | 香蕉视频免费看 | 国产精品乱码高清在线看 | 高清不卡免费视频 | 91插插影库 | 激情久久久久久久久久久久久久久久 | 最近中文字幕 | 九色视频网址 | 国产一区二区三区在线 | 亚洲天天综合 | 国产精品视频久久久 | 亚洲激情 | 天天操天天射天天插 | 日韩一区正在播放 | 婷婷色中文 | 国产亚洲精品成人av久久影院 | 99久热在线精品 | 久久激情电影 | 国产精品一级在线 | 久久午夜视频 | 久久露脸国产精品 | a精品视频 | 免费在线观看视频一区 | 亚洲在线国产 | 色视频国产直接看 | 天天曰天天爽 | 伊人狠狠操 | 亚洲黄网址 | 一本一本久久a久久精品牛牛影视 | 一级黄色片在线免费看 | av短片在线观看 | 91夜夜夜| 国产在线观看一区 | 伊人狠狠干 | 激情av综合 | 成人高清av在线 | 制服丝袜一区二区 | 亚洲精品人人 | 四虎成人精品 | 亚洲在线综合 | 欧美日韩在线观看一区二区 | 国产成人精品久久二区二区 | 婷婷久久精品 | 免费a视频在线观看 | 视频在线精品 | 人人爽人人爽av | 欧美日韩中文国产一区发布 | 涩涩资源网 | 日日天天av | 激情婷婷六月 | 丰满少妇在线观看 | 亚洲一区二区高潮无套美女 | 丝袜美腿一区 | www四虎影院 | 国产免费作爱视频 | 亚洲永久精品在线观看 | 99色在线观看视频 | 久久国产a | 久久五月天色综合 | 缴情综合网五月天 | 91精品在线看 | 欧美另类高潮 | 中文日韩在线 | 久久免费看视频 | 国产精品久久久一区二区 | 精品国产乱码一区二 | 久草在线 | 国产精品一区一区三区 | 国产a精品| 69绿帽绿奴3pvideos| 精品欧美日韩 | 欧美日韩视频在线 | 天天操天天添天天吹 | 欧美精品乱码久久久久久 | 亚洲人视频在线 | 五月天.com| 一本到视频在线观看 | 久久看片网站 | 国产精品视频永久免费播放 | 久久成人麻豆午夜电影 | 国产99一区| 亚洲日本激情 | 在线观看视频黄色 | 91女神的呻吟细腰翘臀美女 | 在线免费中文字幕 | 日韩电影在线一区 | 91电影福利 | 久色小说 | 精品麻豆入口免费 | 精品亚洲视频在线观看 | 久久一区二区三区国产精品 | 精品专区一区二区 | 久久综合久久综合这里只有精品 | 中文字幕网站视频在线 | 麻豆传媒电影在线观看 | 福利视频精品 | 久久久久久久久久久久亚洲 | 天天干天天在线 | 99热这里是精品 | 在线只有精品 | 精品在线看| 热re99久久精品国产99热 | 午夜色性片| 欧美午夜一区二区福利视频 | 中文字幕在线观看视频一区二区三区 | 韩国精品一区二区三区六区色诱 | 欧美另类性 | 蜜臀av性久久久久蜜臀av | 精品视频区 | 日韩网站在线播放 | 欧美激情一区不卡 | 日本精品久久久久 | 亚洲在线观看av | 人成电影网 | 日韩欧美一区二区三区视频 | 久久久久久久久久免费视频 | 亚洲1区在线 | 久久五月天色综合 | 九九视频精品免费 | 午夜精品久久久久久久99无限制 | 欧美国产日韩在线视频 | 在线看毛片网站 | 97超碰人人模人人人爽人人爱 | 激情综合网五月婷婷 | 毛片网站观看 | 日日干天天射 | 免费男女羞羞的视频网站中文字幕 | 玖草在线观看 | 国产一区二区中文字幕 | 三级小视频在线观看 | 天天se天天cao天天干 | 韩日成人av | 精品国产区 | 国产一区二区三区 在线 | 亚洲精品乱码久久久久久久久久 | 国产主播大尺度精品福利免费 | 91视频 - x99av| 欧美在线不卡一区 | 一区二区三区久久 | 欧美日韩中文在线观看 | 黄色特一级片 | 国产区精品在线 | 国产淫片免费看 | 久久女同性恋中文字幕 | 日韩高清一二区 | 成人网在线免费视频 | 日产av在线播放 | 国产亚洲综合精品 | 操处女逼 | 蜜臀91丨九色丨蝌蚪老版 | 精品人人爽 | 日韩电影在线观看中文字幕 | 久久亚洲欧美 | 久久久久成人精品亚洲国产 | 一区二区理论片 | 国产精品去看片 | 日本性xxxxx 亚洲精品午夜久久久 | 免费毛片aaaaaa | 天天综合亚洲 | 欧美久久久一区二区三区 | 色丁香婷婷 | 久久精品国产免费看久久精品 | 国产精品亚洲片夜色在线 | 久久久久久久久久久网 | 国产精品一区二区三区久久久 | 国产在线日本 | 成人精品影视 | 国产精品综合在线观看 | 最新中文字幕在线资源 | 国产亚洲精品日韩在线tv黄 | 二区三区毛片 | 久久夜色精品国产欧美乱 | 亚洲作爱视频 | 亚洲欧美视频在线 | 999久久久久久久久久久 | 国产永久免费高清在线观看视频 | 夜夜躁狠狠躁日日躁 | 欧美成人91 | 亚洲精品乱码久久久久久蜜桃欧美 | 婷婷国产一区二区三区 | 国产成人黄色在线 | 久久久国产精品免费 | 欧美日韩精品影院 | 国产高清免费在线播放 | 精品一区 在线 | 天天搞夜夜骑 | 超碰99在线| 91视频在线播放视频 | 五月婷婷综合网 | 深爱婷婷网 | 亚洲精品视频播放 | 亚洲精品在线一区二区 | 亚洲国产一二三 | 三级动态视频在线观看 | 中文字幕一区二区三区久久 | 国产精品黑丝在线观看 | 丁香五香天综合情 | 婷婷午夜天| 永久免费精品视频网站 | 亚洲黄a | 亚洲国产精品va在线 | av东方在线 | 99久久夜色精品国产亚洲 | 日日夜夜天天综合 | 亚洲综合激情五月 | 亚洲日本激情 | 九九免费精品视频 | 久草在线官网 | 中文字幕丝袜制服 | 四虎精品成人免费网站 | a在线观看免费视频 | av在线免费播放网站 | 久久久久久美女 | 狠狠狠狠狠干 | 国产一级免费av | 97人人超| 国产二区电影 | 欧美日本在线视频 | 午夜av在线播放 | 中文字幕在线播放一区二区 | 国产精品国产三级国产aⅴ9色 | 久久久久久久久久久久国产精品 | 天天操天天摸天天干 | 久久久精品国产免费观看同学 | 一区二区三区不卡在线 | 狠狠黄 | 欧美一级裸体视频 | 一级成人在线 | 日韩中文字幕亚洲一区二区va在线 | 日韩在线小视频 | 久久综合九色99 | 91在线最新 | 久久精品三 | 国产黄色一级大片 | 香蕉视频导航 | 久久爱导航 | 国产成人专区 | 欧美人zozo | 91网免费看| 亚洲欧美乱综合图片区小说区 | 国产 一区二区三区 在线 | 国产精品永久免费视频 | 天天操天天射天天插 | 国产亚洲精品久久久久动 | 成人少妇影院yyyy | 亚洲激情校园春色 | 免费在线一区二区 | 亚洲区精品 | 久久玖 | 久久免费激情视频 | 国产亲近乱来精品 | 丁香久久久 | 欧美日韩视频在线观看一区二区 | 日韩欧美一二三 | av电影免费 | 天天综合成人 | 国产黄色片免费在线观看 | 久久久av免费 | aa级黄色大片 | 伊人干综合| 99这里只有精品99 | 久久精品五月 | 91chinese在线 | 一区在线电影 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产一级二级三级在线观看 | 久精品视频在线观看 | 亚洲精品短视频 | 在线精品一区二区 | 亚洲国产精品日韩 | 日韩欧美综合精品 | 黄色免费av | 欧美性性网 | av888.com| 91三级在线观看 | 中文av影院 | 成人av在线网 | 欧美aaa一级 | 日韩高清av | 国产第一二区 | 国产高清不卡一区二区三区 | 久久精品人 | 久久久久久久久精 |