oracle表訪問次數
A. oracle資料庫訪問量達到極限後,如何緊急訪問資料庫
應該是process到上限了吧。可以考慮通過主機登錄,如果還不行,那就沒辦法了,只能不停的嘗試。
B. 如何減少對資料庫的訪問次數來加快sql執行
當執行每條SQL語句時, ORACLE在內部執行了許多工作: 解析SQL語句, 估算索引的利用率, 綁定變數 , 讀數據塊等等. 由此可見,
減少訪問資料庫的次數 , 就能實際上減少ORACLE的工作量.
例如,
以下有三種方法可以檢索出雇員號等於0342或0291的職員.
方法1 (最低效)
SELECT
EMP_NAME , SALARY , GRADE
FROM EMP
WHERE EMP_NO = 342;
SELECT EMP_NAME , SALARY , GRADE
FROM EMP
WHERE
EMP_NO = 291;
方法2 (次低效)
DECLARE
CURSOR C1 (E_NO
NUMBER) IS
SELECT EMP_NAME,SALARY,GRADE
FROM EMP
WHERE
EMP_NO = E_NO;
BEGIN
OPEN C1(342);
FETCH C1 INTO …,..,..
;
…..
OPEN C1(291);
FETCH C1 INTO …,..,.. ;
CLOSE C1;
END;
方法3 (高效)
SELECT A.EMP_NAME ,
A.SALARY , A.GRADE,
B.EMP_NAME , B.SALARY , B.GRADE
FROM EMP
A,EMP B
WHERE A.EMP_NO = 342
AND B.EMP_NO = 291;
C. 做過哪些oracle sql優化
一:使用where少使用having;
二:查兩張以上表時,把記錄少的放在右邊;
三:減少對表的訪問次數;
四:有where子查詢時,子查詢放在最前;
五:select語句中盡量避免使用*(執行時會把*依次轉換為列名);
六:盡量多的使用commit;
七:Decode可以避免重復掃描相同的記錄或重復連接相同的表;
八:通過內部函數也可提高sql效率;
九:連接多個表時,使用別名並把別名前綴於每個欄位上;
十:用exists代替in
十一:not exists代替 not in(not in 字句將執行一個內部的排序和合並,任何情況下,not in是最低效的,子查詢中全表掃描了。為了避免使用not in,可以改寫成outer joins或not exists);
十二:表連接比exists更高效;
十三:用exists替換distinct
D. oracle怎麼查看資料庫的訪問量
oracle怎麼查看資料庫的訪問量
可直接在 v$session視圖中查詢。
語句如:
select * from v$session where username='用戶名';
其中用戶名應為英文大寫字母。
E. oracle怎麼根據group by 統計
舉分組查詢的一個例子
創建測試表
create table test
(姓名 varchar2(10),
訪問時間 date,
進入時間 date,
離開時間 date);
insert into test values ('張三',to_date('2013-02-03 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-03 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-03 15:33:22','yyyy-mm-dd hh24:mi:ss'));
insert into test values ('李四',to_date('2013-02-04 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-04 18:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-04 18:53:22','yyyy-mm-dd hh24:mi:ss'));
insert into test values ('王武',to_date('2013-02-04 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-05 17:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-05 18:23:22','yyyy-mm-dd hh24:mi:ss'));
insert into test values ('張三',to_date('2013-02-04 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-06 11:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-06 14:23:22','yyyy-mm-dd hh24:mi:ss'));
運行
select 姓名,
to_char(訪問時間,'yyyy-mm') 訪問月份,
to_char(trunc(round(sum(離開時間-進入時間)*1440)/60))||'小時'||to_char(round(sum((離開時間-進入時間)*1440))-trunc(round(sum(離開時間-進入時間)*1440)/60)*60)||'分鍾' 時間匯總,
count(*) 訪問次數 from test
group by 姓名,to_char(訪問時間,'yyyy-mm');
按月分組統計
F. 如何在Oracle中找到訪問次數最多的表
1 在應用層設計和記錄表的訪問量
2 資料庫級別的觸發器--查查資料
如果使用監控視圖,行不通,上面2個方法可以試試,1 要更好些!
G. oracle 如何統計某個欄位出現的次數
對於你的要求,應該是這樣
select
count(id)
from
表
where
id
=
'1'
但是如果你需要查詢表id欄位中所有數據出現的次數,那需要進行分組查詢:
select
id,count(id)
as
出現次數
from
表
group
by
id