国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

巧取指定的記錄與巧用外關聯查詢

2024-07-21 02:32:47
字體:
來源:轉載
供稿:網友
1         取得表中第6到第10條記錄的值1.1       第一種方法, 使用minus語句假設ddl語句如下:CREATE TABLE T(ID VARCHAR2(4) PRIMARY KEY, VALUE INT)那么第一種方法就是取出前5條,再取出前10條,然后采用集合運算的方法把前10條減去前5條就OK了,SQL語句如下SELECT * FROM T WHERE ROWNUM <= 10MINUSSELECT * FROM T WHERE ROWNUM <= 5;1.2       另外一種方法,采用子查詢子查詢的這種方法相對比較復雜一點,不過性能要比剛才的集合相減要好一些。這種方法首先在子查詢中得到前10條數據,順路也取得前10條數據的rownum,然后再一次查詢的時候取得剛才查詢的rownum大于5的那些數據。SQL語句如下SELECT ID, VALUE FROM (SELECT ID, VALUE, ROWNUM R FROM T WHERE R <= 10)WHERE    R > 5;通過上面的語句,就得到了6到第10條數據了。2         利用外連接替代not in語句in語句還有not in語句的效率是非常的差的,因為數據庫在碰到這兩種語句的時候是要把數據進行一條一條的比對,假如in或者not in兩側的數據量在上萬條的時候,進行比對的次數就是上億次,很可能一個簡單的sql語句就要執行半個小時以上。這種效率客戶是肯定不能夠接受的。那我們可以考慮兩種方法進行替代,第一種就是采用exist語句和not exist語句,這種大家應該比較熟悉了。另外一種就是巧用外關聯語句,這種方法可能大家不是很熟悉,我來稍微說一下。假設數據表的建表DDL語句為CREATE TABLE T1(ID VARCHAR2(4) PRIMARY KEY, VALUE INT)而in或者not in的表的建表DDL語句為CREATE TABLE T2(VALUE INT)Oracle中外關聯采用的是(+)符號表示外關聯,也就是說標識了(+)符號的部分在找不到對應的值的時候為NULL。下面是替代in語句的時候的SQL語句SELECT T1.ID, T1.VALUE FROM T1, T2 WHERE T1.VALUE = T2.VALUE(+) AND T2.VALUE IS NOT NULL;而類似的。替代not in語句的時候的SQL語句則為SELECT T1.ID, T1.VALUE FROM T1, T2 WHERE T1.VALUE = T2.VALUE(+) AND T2.VALUE IS NULL;大家可以試驗一下,在數據量多的時候,采用外關聯比用in或者not in的執行效率要高很多很多。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1473286

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开阳县| 滨州市| 中江县| 朔州市| 襄汾县| 华宁县| 自治县| 墨竹工卡县| 县级市| 探索| 新乐市| 永胜县| 甘南县| 克拉玛依市| 定襄县| 水城县| 额尔古纳市| 霸州市| 云和县| 蒙城县| 韩城市| 屏山县| 丹阳市| 和硕县| 西青区| 德阳市| 井陉县| 绩溪县| 浦城县| 阿合奇县| 南宁市| 平山县| 米泉市| 蓬安县| 宜川县| 扶风县| 许昌市| 定边县| 黑山县| 深泽县| 长春市|