<optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

    <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
  1. 
    
  2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

  3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

        1. <listing id="r9hwm"></listing>
          <delect id="r9hwm"></delect>
          <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>

          數據庫語句執行

          怎樣優化SQL語句的執行

          環境:oracle 817 + linux + 陣列柜 swd_billdetail 表5000萬條數據 SUPER_USER 表2800條數據 連接列上都有索引,而且super_user中的一條對應于swd_billdetail表中的很多條記錄表與索引都做了分析。

          實際應用的查詢為: select a。CHANNEL, B。

          user_class from swd_billdetail B, SUPER_USER A where A。cn = B。

          cn; 這樣在分析時導致查詢出的數據過多,不方便,所以用count(a。 CHANNEL||B。

          user_class)來代替,而且count(a。CHANNEL||B。

          user_class)操作本身并不占用過多的時間,所以可以接受此種替代。 利用索引查詢出SWD_BILLDETAIL表中所有記錄的方法 SQL> select count(id) from SWD_BILLDETAIL; COUNT(ID) ---------- 53923574 Elapsed: 00:02:166。

          00 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=18051 Card=1) 1 0 SORT (AGGREGATE) 2 1 INDEX (FAST FULL SCAN) OF 'SYS_C001851' (UNIQUE) (Cost=18051 Card=54863946) Statistics ---------------------------------------------------------- 0 recursive calls 1952 db block gets 158776 consistent gets 158779 physical reads 1004 redo size 295 bytes sent via SQL*Net to client 421 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1 rows processed 利用全表掃描從SWD_BILLDETAIL表中取出全部數據的方法。 SQL> select count(user_class) from swd_billdetail; COUNT(USER_CLASS) ----------------- 53923574 Elapsed: 00:11:703。

          07 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=165412 Card=1 Bytes=2) 1 0 SORT (AGGREGATE) 2 1 TABLE ACCESS (FULL) OF 'SWD_BILLDETAIL' (Cost=165412 Card=54863946 Bytes=109727892) Statistics ---------------------------------------------------------- 0 recursive calls 8823 db block gets 1431070 consistent gets 1419520 physical reads 0 redo size 303 bytes sent via SQL*Net to client 421 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1 rows processed select count(a。 CHANNEL||B。

          user_class) from swd_billdetail B, SUPER_USER A where A。cn = B。

          cn; EXEC_ORDER PLANLINE ---------- ----------------------------------------------------------------------------------------------------------- 6 SELECT STATEMENT OPT_MODE:CHOOSE (COST=108968,CARD=1,BYTES=21) 5 SORT (AGGREGATE) (COST=,CARD=1,BYTES=21) 4 NESTED LOOPS (COST=108968,CARD=1213745,BYTES=25488645) 1 TABLE ACCESS (FULL) OF 'SWORD。 SUPER_USER' (COST=2,CARD=2794,BYTES=27940) 3 TABLE ACCESS (BY INDEX ROWID) OF 'SWORD。

          SWD_BILLDETAIL' (COST=39,CARD=54863946,BYTES=603503406) 2 INDEX (RANGE SCAN) OF 'SWORD。 IDX_DETAIL_CN' (NON-UNIQUE) (COST=3,CARD=54863946,BYTES=) 這個查詢耗費的時間很長,需要1個多小時。

          運行后的信息如下: COUNT(A。CHANNEL||B。

          USER_CLASS) ------------------------------ 1186387 Elapsed: 01:107:6429。 87 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=108968 Card=1 Bytes=21) 1 0 SORT (AGGREGATE) 2 1 NESTED LOOPS (Cost=108968 Card=1213745 Bytes=25488645) 3 2 TABLE ACCESS (FULL) OF 'SUPER_USER' (Cost=2 Card=2794Bytes=27940) 4 2 TABLE ACCESS (BY INDEX ROWID) OF 'SWD_BILLDETAIL' (Cost=39 Card=54863946 Bytes=603503406) 5 4 INDEX (RANGE SCAN) OF 'IDX_DETAIL_CN' (NON-UNIQUE) (Cost=3 Card=54863946) Statistics ---------------------------------------------------------- 0 recursive calls 4 db block gets 1196954 consistent gets 1165726 physical reads 0 redo size 316 bytes sent via SQL*Net to client 421 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk) 1 rows processed 將語句中加入hints,讓oracle的優化器使用嵌套循環,并且大表作為驅動表,生成新的執行計劃: select /*+ ORDERED USE_NL(A) */ count(a。

          CHANNEL||B。user_class) from swd_billdetail B, SUPER_USER A where A。

          cn = B。cn; EXEC_ORDER PLANLINE ---------- ----------------------------------------------------------------------------------------------------- 6 SELECT STATEMENT OPT_MODE:CHOOSE (COST=109893304,CARD=1,BYTES=21) 5 SORT (AGGREGATE) (COST=,CARD=1,BYTES=21) 4 NESTED LOOPS (COST=109893304,CARD=1213745,BYTES=25488645) 1 TABLE ACCESS (FULL) OF 'SWORD。

          SWD_BILLDETAIL' (COST=165412,CARD=54863946,BYTES=603503406) 3 TABLE ACCESS (BY INDEX ROWID) OF 'SWORD。SUPER_USER。

          SQL中SELECT語句的執行順序是什么

          標準的 SQL 的解析順序為: (1)。

          FROM 子句, 組裝來自不同數據源的數據 (2)。WHERE 子句, 基于指定的條件對記錄進行篩選 (3)。

          GROUP BY 子句, 將數據劃分為多個分組 (4)。使用聚合函數進行計算 (5)。

          使用 HAVING 子句篩選分組 (6)。計算所有的表達式 (7)。

          使用 ORDER BY 對結果集進行排序 舉例說明: 在學生成績表中 (暫記為 tb_Grade), 把 "考生姓名"內容不為空的記錄按照 "考生姓名" 分組, 并且篩選分組結果, 選出 "總成績" 大于 600 分的。 標準順序的 SQL 語句為: select 考生姓名, max(總成績) as max總成績 from tb_Grade where 考生姓名 is not null group by 考生姓名 having max(總成績) > 600 order by max總成績 在上面的示例中 SQL 語句的執行順序如下: (1)。

          首先執行 FROM 子句, 從 tb_Grade 表組裝數據源的數據 (2)。 執行 WHERE 子句, 篩選 tb_Grade 表中所有數據不為 NULL 的數據 (3)。

          執行 GROUP BY 子句, 把 tb_Grade 表按 "學生姓名" 列進行分組 (4)。 計算 max() 聚集函數, 按 "總成績" 求出總成績中最大的一些數值 (5)。

          執行 HAVING 子句, 篩選課程的總成績大于 600 分的。 (7)。

          執行 ORDER BY 子句, 把最后的結果按 "Max 成績" 進行排序。

          SQL 語句的執行順序 問題

          SELECT

          從數據庫中檢索行,并允許從一個或多個表中選擇一個或多個行或列。雖然 SELECT 語句的完整語法較復雜,但是其主要的子句可歸納如下:

          SELECT select_list

          [ INTO new_table ]

          FROM table_source

          [ WHERE search_condition ]

          [ GROUP BY group_by_expression ]

          [ HAVING search_condition ]

          [ ORDER BY order_expression [ ASC | DESC ] ]

          可以在查詢之間使用 UNION 運算符,以將查詢的結果組合成單個結果集。

          語法

          SELECT statement ::=

          < query_expression >

          [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }

          [ ,。n ] ]

          [ COMPUTE

          { { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,。n ]

          [ BY expression [ ,。n ] ]

          ]

          [ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }

          [ , XMLDATA ]

          [ , ELEMENTS ]

          [ , BINARY base64 ]

          }

          ]

          [ OPTION ( < query_hint > [ ,。n ]) ]

          < query expression > ::=

          { < query specification > | ( < query expression > ) }

          [ UNION [ ALL ] < query specification | ( < query expression > ) [。n ] ]

          < query specification > ::=

          SELECT [ ALL | DISTINCT ]

          [ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ]

          < select_list >

          [ INTO new_table ]

          [ FROM { < table_source > } [ ,。n ] ]

          [ WHERE < search_condition > ]

          [ GROUP BY [ ALL ] group_by_expression [ ,。n ]

          [ WITH { CUBE | ROLLUP } ]

          ]

          [HAVING <search_condition>]

          詳細的請看一下sql的幫助文件。

          SQL語句是按什么順序執行的

          分析器會先看語句的第一個詞,當它發現第一個詞是SELECT關鍵字的時候,它會跳到FROM關鍵字,然后通過FROM關鍵字找到表名并把表裝入內存。

          接著是找WHERE關鍵字,如果找不到則返回到SELECT找字段解析,如果找到WHERE,則分析其中的條件,完成后再回到SELECT分析字段。 最后形成一張我們要的虛表。

          其它的先不說了,只說WHERE。 WHERE關鍵字后面的是條件表達式。

          如果學過C語言等編程語言就會知道,條件表達式計算完成后,會有一個返回值,即非0或0,非0即為真(true),0即為假(false)。同理WHERE后面的條件也有一個返回值,真或假,來確定接下來執不執行SELECT。

          例: SELECT * FROM STUDENT WHERE SNO = '1'; 分析器先找到關鍵字SELECT,然后跳到FROM關鍵字將STUDENT表導入內存,并通過指針p1找到第一條記錄,接著找到WHERE關鍵字計算它的條件表達式,如果為真那么把這條記錄裝到一個虛表當中,p1再指向下一條記錄。 如果為假那么p1直接指向下一條記錄,而不進行其它操作。

          一直檢索完整個表,關把虛表返回給用戶。 再說EXISTS謂詞,EXISTS謂詞也是條件表達式的一部分。

          當然它也有一個返回值(true或false)。 例: SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE SC。

          Sno = Student。Sno AND SC。

          Cno = '1'); 這是一個SQL語句的嵌套使用,但和上面說的SQL語句的執行過程也是相同的。嵌套的意思也就是說當分析主SQL語句(外面的那個SELECT,我們權且先這么叫它)到WHERE關鍵字的時候,又進入了另一個SQL語句中。

          那么也就是說,分析器先找到表Student并裝入內存,一個指針(例如p1)指向Student表中的第一條記錄。然后進入WHERE里分析里面的SQL語句,再把SC表裝入內存,另一個指針(例如p2)指向SC表中的第一條記錄,分析WHERE后面的條件表達式,依次進行分析,最后分析出一個虛表2,也就變成 SELECT Sname FROM Student WHERE EXISTS 虛表2 如果虛表為空表,EXISTS 虛表2 也就為false,不返回到SELECT,而p1指向下一條記錄。

          如果虛表2不為空也就是有記錄,那么EXISTS 虛表2 為true同,返回到SELECT并把p1指向的記錄添加到主SQL語句的虛表1當中。

          SQl中觸發器怎樣執行的

          創建觸發器 是特殊的存儲過程,自動執行,一般不要有返回值。

          1、后觸發器 (AFTER,FOR)先執行對應語句,后執行觸發器中的語句。

          2、前觸發器 并沒有真正的執行觸發語句(insert,update,delete),而是執行觸發后的語句。

          3、行級觸發器 (FOR EACH ROW) 在SQL server 中不存在。

          擴展資料:

          創建觸發的語法

          CREATE TRIGGER trigger_name --觸發器名稱

          ON table_name --觸發的表

          [WITH ENCRYPTION]

          FOR [DELETE, INSERT, UPDATE] --選擇觸發器類型

          AS --觸發后要做的語句

          T-SQL語句

          GO --結束標記

          如何直接執行SQL語句

          using (SqlConnection con = new SqlConnection(*tionStrings["default"].ConnectionString))

          { SqlCommand cmd = new SqlCommand();

          *tion = con;

          sqlStr = @"";

          *dText = sqlStr ;

          *dType = *;

          gs = *eNonQuery(); }

          這個就是直接執行sql語句的代碼!

          如何計算SQL語句執行時間

          一、按照*及CSDN等搜索結果 在SQL語句前面加上了這一句: 經查詢,SET STATISTICS TIME ON命令報告下面的查詢的實際占用時間和CPU使用情況。

          使用后覺得給出的時間很細致,跟執行過程結合的很緊密,但是比較多,似乎不夠精確。 二、CNBLOGS網友的文章里 Code use northwind declare @date1 datetime declare @date2 datetime select @date1=getdate() --測試語句 select * from employees select @date2=getdate()。

          轉載請注明出處華閱文章網 » 數據庫語句執行

          短句

          調用sql語句

          閱讀(284)

          數據調用的sql語句 1、調用含有圖片的日志 1. SELECT * FROM `uchome_blog` WHERE `picflag` =1; 復制代碼 2、調用最近更新的10條日志 1. SELECT * FROM uchome_blog FOR

          短句

          英語句子的賓語

          閱讀(313)

          英語中句子的賓語是什么 英語語句基本結構分析: >>主謂賓結構: 主語:可以作主語的成分有名詞(如boy),主格代詞(如you),動詞不定式,動名詞等。主語一般在句首。注意名詞單數形式常和

          短句

          按鍵精靈if循環語句

          閱讀(281)

          按鍵精靈if循環語句 doifcolor cx,cy,col,0 //如果找到色,cx,cy就是此色的坐標(兩者都會大于0),沒找到,就是-1,-1end ifdelay 200 //大至每0.2秒判斷一次,以減小資源占用。loop

          短句

          聯合查詢sql語句

          閱讀(304)

          SQL聯合查詢語句 A表字段stuid,stunameB表字段bid,stuid,score,coursename,statusCREATE TABLE A#( stuid INT, stuname VARCHAR(10));CREATE TABLE B#

          短句

          sql語句賦值給變量賦值

          閱讀(612)

          如何把sql語句查詢到的值賦值給變量樓上的例子復雜了,不需要那樣去實現,可以簡化如下:string dbStr = "data source=127.0.0.1;uid=sa;pwd=fhploverrz;database=BLOG"; int result

          短句

          英語句子講解

          閱讀(281)

          英語句子結構講解 含例子 組成句子的各個部分叫句子成分。英語句子成分有主語,謂語,表語,賓語,賓語補足語,定語,狀語等。 順序一般是主語,謂語,賓語,賓語補足語,而表語,定語,狀語的位置要根據情況而定。 1、主語 主語表示句子主要說明的人或事物,

          短句

          茶茶葉語句

          閱讀(242)

          【贊美茶的詩句、語言都行!最好是名人名句、或者話語組成里面就有一、齊己的贊美茶詩 百草讓為靈,功先百草成.甘傳天下口,貴占火前名.出處春無雁,收時谷有鶯.封題從澤國,貢獻入秦京.嗅覺精新極,嘗知骨自輕.研通天柱響,摘繞蜀山明.賦客秋吟起,禪

          短句

          夸別人的語句

          閱讀(238)

          夸人的語句 越夸張越好 1:擴大夸張: 例:你端坐在那里,不怒而威,明德惟馨,乃世人典范。 2:縮小夸張: 例:你端坐在那里,我自慚形穢,如俗世塵埃不值一提。 3:超前夸張: 例:你端坐在那里,我堅信世界將臣服在你的腳下。 4:幻想夸張: 例:你端坐在那里,

          短句

          青春勵志語句

          閱讀(269)

          青春勵志的優美句子青春勵志的句子,青春唯美勵志語錄 1、青春在我的心中是苦澀的又是甘甜的,是精致的又是粗糙的,是清晰的又是朦朧的,是一杯苦茶,最后卻品出清雅之香。 2、生命之舟面對險灘,面對激流,弱者會選擇逃避和放棄,而強者則會選擇面對

          短句

          accesssql執行sql語句

          閱讀(297)

          ACCESS執行SQL語句,ACCESS怎么寫SQL語句 Access SQL查詢語句是兼容的,有兩種方式可以使用SQL語句:方式一:在“查詢”的試圖里,可以使用Access的向導模式,也可以直接使用SQL語言

          短句

          存儲過程if語句oracle

          閱讀(290)

          oracle 存儲過程中 如果用if語句判斷一條查詢語句的結果集是否為空 已經經過測試,可以。create table test1023(id int); --創建測試表 test1023declare cnt int;beginselec

          短句

          中switch語句

          閱讀(257)

          java中switch語句的用法 switch 語句的格式:switch ( 整型或字符型變量 ) { case 變量可能值1 : 分支一; break; case 變量可能值2 : 分支二; break; case 變量可能值3

          短句

          調用sql語句

          閱讀(285)

          數據調用的sql語句 1、調用含有圖片的日志 1. SELECT * FROM `uchome_blog` WHERE `picflag` =1; 復制代碼 2、調用最近更新的10條日志 1. SELECT * FROM uchome_blog FOR

          短句

          英語句子的賓語

          閱讀(313)

          英語中句子的賓語是什么 英語語句基本結構分析: >>主謂賓結構: 主語:可以作主語的成分有名詞(如boy),主格代詞(如you),動詞不定式,動名詞等。主語一般在句首。注意名詞單數形式常和

          短句

          按鍵精靈if循環語句

          閱讀(282)

          按鍵精靈if循環語句 doifcolor cx,cy,col,0 //如果找到色,cx,cy就是此色的坐標(兩者都會大于0),沒找到,就是-1,-1end ifdelay 200 //大至每0.2秒判斷一次,以減小資源占用。loop

          短句

          sql語句賦值給變量賦值

          閱讀(613)

          如何把sql語句查詢到的值賦值給變量樓上的例子復雜了,不需要那樣去實現,可以簡化如下:string dbStr = "data source=127.0.0.1;uid=sa;pwd=fhploverrz;database=BLOG"; int result

          短句

          聯合查詢sql語句

          閱讀(305)

          SQL聯合查詢語句 A表字段stuid,stunameB表字段bid,stuid,score,coursename,statusCREATE TABLE A#( stuid INT, stuname VARCHAR(10));CREATE TABLE B#

          短句

          英語句子講解

          閱讀(281)

          英語句子結構講解 含例子 組成句子的各個部分叫句子成分。英語句子成分有主語,謂語,表語,賓語,賓語補足語,定語,狀語等。 順序一般是主語,謂語,賓語,賓語補足語,而表語,定語,狀語的位置要根據情況而定。 1、主語 主語表示句子主要說明的人或事物,

          短句

          javaif語句elseif

          閱讀(292)

          java中的if與else語句 if (條件一){} = 如果括號中條件一的正確,則執行大括號中的語句if (條件一){語句一} else{語句二} 如果條件一正確,執行語句一,否則執行語句二if (條件一){

          <optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

            <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
          1. 
            
          2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

          3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

                1. <listing id="r9hwm"></listing>
                  <delect id="r9hwm"></delect>
                  <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>
                  亚洲丰满少妇xxxxx高潮