sql查詢時使用臨時表的速度問題
做如下查詢
1)不使用臨時表:
select * from 庫存 where 物料編號 in (select 物料編號 from 物料 where 製造廠商='abc');
500條記錄耗時1s
2)使用臨時表
create table #pro(procode nvarchar(30))
insert into #pro select 物料編號 from 物料 where 製造廠商='abc'
select * from 庫存 where 物料編號 in (select procode from #pro);
500條記錄耗時30s
原因:在庫存表裡 物料編號 是索引過的,而#pro 裡的procode 沒有索引,這樣由於結構不同造成查詢耗時增加。
解決:給#pro 加上索引:
create index IX_pro ON #pro(procode)
結果耗時變成3s(索引也需要增加開銷)
相關推薦
ORACLE創建臨時事務表global temporary table 和 查詢時臨時表with tempName as (select ) select
query 問題 weight select 別名 onf bold hellip course 創建臨時事務表只是保存當前會話(session)用到的數據,數據只在事務或會話期間存在,可規避多線程調用數據沖突問題 -- Create table create glo
sql查詢時使用臨時表的速度問題
做如下查詢 1)不使用臨時表: select * from 庫存 where 物料編號 in (select 物料編號 from 物料 where 製造廠商='abc'); 500條記錄耗時1s 2)使用臨時表 create table #pro(procode n
sql查詢時找不到表
今天向系統中新增一個通訊錄的模組,編碼完成,執行的時候卻提示“com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'mydb1.addressbooks
sql Server中臨時表與數據表的區別
tzu bio 默認 omx msu oaf sum nmp dia sql server 中臨時表與數據表的區別 1、如何判斷臨時表和數據表已生成 --如何判斷臨時表是否已創建--- if exists(select * from tempdb..sysobjects
使用一條sql查詢多個表中的記錄數
nbsp lec sel code spa select bold style 查詢 方法一: select t1.num1,t2.num2,t3.num3 from (select count(*) num1 from table1) t1, (se
Sql 查詢庫、表、列名的語句
查詢庫名 Select Name FROM Master..SysDatabases order by Name 查詢News庫的所有表名 Select Name from News..sysobjects where xtype='u' order by name 查詢T_News
SQL查詢時的join與where篩選比較
參考:https://blog.csdn.net/yanggufyf123/article/details/73549578 轉載地址:轉載地址 left join :左連線,返回左表中所有的記錄以及右表中連線欄位相等的記錄。 right join :右連線,返回右表中所有的記錄以及左表
oracle中使用sql查詢時欄位為空則賦值預設
oracle 通過 nvl( )函式sql 查詢時為 空值 賦預設值 oracle 函式介紹之nvl 函式宣告:nvl(col,val) 說明:當col為空時取val作為返回值,當col不為空時取col值。 用處:最主要的是格式化資料,比如計算金額時,不想出現
sql with 使用-臨時表
1、業務場景: 有些需求需要對多個表分別統計出結果,然後使用每個表統計的結果進行彙總,這個時候臨時表就發揮作用了。 2、簡單使用: with t1 as(select empId,yearMo
SQL查詢~ 存在一個表而不在另一個表中的資料
A、B兩表,找出ID欄位中,存在A表,但是不存在B表的資料。A表總共13w資料,去重後大約3W條資料,B表有2W條資料,且B表的ID欄位有索引。 方法一 使用 not in ,容易理解,效率低 ~執行時間為:1.395秒~ 1 select distinct A.I
sql 查詢兩張表結構差異、兩張結構相同表的資料差異
*1.比較表結構 *: (select column_name,table_name from user_tab_columns where table_name = ‘EMP’ minus select column_name,table_name from
SQL查詢學生資訊表中的學生記錄
在學生成績資料庫中,查詢學生資訊表中的學生記錄。 1.開啟資料庫,點選“連線”。 2.右擊“資料庫”,選擇“新建資料庫”。 3.新建資料庫的名稱為“學生成績”,點選“確定”。
獲取通過sql查詢資料庫的表,欄位,主鍵,自增,欄位型別等資訊
1.查詢所有表,以及表的備註資訊。 Oracle資料庫 select t
spring-data-JPA使用JpaRepository註解自定義SQL查詢資料庫多表查詢
一. 首先在@Entity註解的類裡面要寫好外來鍵關係. 這個 @ManyToOne 註解可以建立外來鍵關係, 不要在自己傻傻的寫一個 private int grades_id; 寫了這個註解以後它會自動的把 Classes 這張表加上 grades_id 欄位.
動態執行Sql語句與臨時表的問題(物件名無效)
exec('selectIDENTITY(int,1,1) as ID,fnum,into #yuecu from store_store where '+@Parameter) select XX,XX1,XX2 from #yuecu 這樣建立一個臨時表
SQL SERVER 建臨時表、迴圈插入資料、遊標遍歷資料庫
create table #tmp (id int) --建立臨時資料表 declare @x int --迴圈插入資料 set @x=1 while @x<=10 begin insert into #tmp values(@x) set @[email&
SQL 查詢時去掉多個count(*)都為0的行
問題: 對於同一個查詢中存在多個count(*),想要將每個count(*)都為0的行去掉。 select a.name ,(select count(*) from b where b.id = a.bid) countB, (select count(*
Sql 怎麼建立臨時表
1、臨時表概述: 臨時表與永久表相似,但臨時表儲存在 tempdb 中(如下圖)。臨時表有兩種型別:本地臨時表和全域性臨時表。它們在名稱、可見性以及可用性上有區別。本地臨時表的名稱以單個數字元號 (#) 打頭;它們僅對當前的使用者連線是可見的;當用戶從 S
mysql查詢優化--臨時表和檔案排序(Using temporary; Using filesort問題解決)
先看一段sql: <span style="font-size:18px;">SELECT * FROM rank_user AS rankUser LEFT JOIN rank_user_level AS userLevel ON rankUser.id
SQL查詢存在A表但不存在B表的資料
方法1: select * from a where id not in(select id from b) 方法2: select a.* from a left join b on a.id=b.id where isnull(b.age)