sql與oracle的關(guān)系 oracle數(shù)據(jù)庫執(zhí)行sql很慢怎么回事?
oracle數(shù)據(jù)庫執(zhí)行sql很慢怎么回事?SQL突然變慢,需要9秒鐘。應(yīng)用程序無法更改,因此我們只能從數(shù)據(jù)庫開始。求解步驟如下:1。檢查SQL是否被索引;2。檢查索引是否無效。提示強(qiáng)制索引(僅用于檢查
oracle數(shù)據(jù)庫執(zhí)行sql很慢怎么回事?
SQL突然變慢,需要9秒鐘。應(yīng)用程序無法更改,因此我們只能從數(shù)據(jù)庫開始。求解步驟如下:1。檢查SQL是否被索引;2。檢查索引是否無效。提示強(qiáng)制索引(僅用于檢查查詢?cè)谔崾緺顟B(tài)下是否發(fā)生了變化,但應(yīng)用程序不能對(duì)其進(jìn)行更改)4:收集表的所有信息(包括索引)5:分析表的所有信息(包括索引)6:再次執(zhí)行并檢查。注意:哪個(gè)用戶執(zhí)行慢,哪個(gè)用戶將被用來操作,以便準(zhǔn)確
一個(gè)SQL突然慢下來,需要9秒鐘。應(yīng)用程序無法更改,因此我們只能從數(shù)據(jù)庫開始。解決步驟如下:
1:檢查SQL是否被索引
2:檢查索引是否無效
3:提示強(qiáng)制索引(僅用于檢查查詢是否在提示狀態(tài)下被更改,并且應(yīng)用程序不能更改)
4:收集表的所有信息(包括索引)
5:分析表的所有信息(包括索引)
6:再次執(zhí)行并檢查。注意:哪個(gè)用戶執(zhí)行速度慢,哪個(gè)用戶會(huì)用來操作,這樣才能準(zhǔn)確
解決方法:需要根據(jù)查詢條件為自己的表設(shè)計(jì)相應(yīng)的索引。有時(shí)可以根據(jù)需要為一個(gè)表構(gòu)建多個(gè)索引。然后再執(zhí)行一次,你會(huì)發(fā)現(xiàn)它過去需要30秒,但現(xiàn)在可以在幾分鐘內(nèi)完成,這與使用光標(biāo)無關(guān)。游標(biāo)的使用完全取決于應(yīng)用程序的需要。我相信你不會(huì)選擇使用光標(biāo),如果你不能使用它們。一般來說,只有在沒有辦法的時(shí)候才選擇游標(biāo)。查詢速度慢的原因是,如果在存儲(chǔ)過程中執(zhí)行查詢,如果沒有索引,它將逐個(gè)搜索并掃描80多萬條數(shù)據(jù)。在完成搜索之前,您不會(huì)看到結(jié)果。但是你在外面執(zhí)行得很快的原因是PLSQL會(huì)先檢查幾條數(shù)據(jù),然后先返回給你,所以你會(huì)馬上看到結(jié)果,但事實(shí)上,查詢沒有結(jié)束并不容易。如果你在有很多數(shù)據(jù)的時(shí)候把它拉下來,你就會(huì)很慢地發(fā)信。事實(shí)上,調(diào)查過程還沒有結(jié)束??傊?,編寫存儲(chǔ)過程的第一步是編寫,第二步是做好優(yōu)化。否則,當(dāng)你有大量的數(shù)據(jù)時(shí),如果你的進(jìn)程寫得不好,問題就會(huì)馬上暴露出來
SQL執(zhí)行很慢,大致可以分為兩種情況