標籤:oracle rownum 對於查詢返回的每一行,使用rownum偽列返回一個數字,表示oracle從表中選擇行或將加入行的順序。選擇的第一行rownum為1,第二行為2,以此類推。可以使用rownum來限制由查詢返回的行數,如下例子:select * from test where rownum < 10;如果一個order by子句和rownum在同一個查詢,那麼行會由order
標籤: 今天突然回想起oracle的分頁查詢,大部分情況大家都是用:SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40)WHERE RN >= 21說是效率高,但是對於SELECT * FROM TABLE_NAME這個原始語句不做任何操作,是不是有些不合理;我明知道要查詢資料的條數,對於原始的查詢範圍就可以加以限制,改造如下: SELECT
標籤:因為like參數使用的非常頻繁,因此如果能夠對like子句使用索引,將很高的提高查詢的效率。例:select * from city where name like ‘%S%’;以上查詢的執行計畫用了全表掃描(TABLE ACCESS FULL),如果能夠修改為:select * from city where name like ‘S%’;那麼查詢的執行計畫將會變成(INDEX RANGE SCAN),成功的利用了name欄位的索引。這意味著Oracle
標籤:前面談到任何對列的操作都可能導致全表掃描,例如:<span style="font-size:18px;">select * from emp where substr(ename,1,2)=’SM’;</span>但是這種查詢又經常使用,我們可以建立一個帶有substr函數的基於函數的索引,<span style="font-size:18px;">create index emp_ename_substr
標籤:任何對列的操作都可能導致全表掃描,這裡所謂的操作包括資料庫函數、計算運算式等等,查詢時要儘可能將操作移至等式的右邊,甚至去掉函數。 例1:下列SQL條件陳述式中的列都建有恰當的索引,但30萬行資料情況下執行速度卻非常慢: select * from record where substrb(CardNo,1,4)='5378'(13秒) select * from record where amount/30< 1
標籤:oracle mysql 將資料從MySQL遷移到Oracle的注意事項1.自動成長的資料類型處理MYSQL有自動成長的資料類型,插入記錄時不用操作此欄位,會自動獲得資料值。ORACLE沒有自動成長的資料類型,需要建立一個自動成長的序號,插入記錄時要把序號的下一個值賦於此欄位。CREATE SEQUENCE 序號的名稱 (最好是表名+序號標記) INCREMENT BY 1
標籤:增加查詢的範圍限制,避免全範圍的搜尋。例:以下查詢表record 中時間ActionTime小於2001年3月1日的資料:select * from record where ActionTime < to_date ('20010301' ,'yyyymm');查詢計劃表明,上面的查詢對錶進行全表掃描,如果我們知道表中的最早的資料為2001年1月1日,那麼,可以增加一個最小時間,使查詢在一個完整的範圍之內。修改如下: select * from