1. 程式人生 > >儲存過程執行很慢,請求優化

儲存過程執行很慢,請求優化

SELECT TD.CourseID,TU.StudentUserID,COUNT(EU.ExerciseSubjectID) AS SubmitCouont
     ,COUNT(ES.ExerciseSubjectID)-COUNT(EU.ExerciseSubjectID) AS NOSubmitCouont
  --edit by lzh end
     FROM  [db_owner].ExerciseSubject ES --作業表
      INNER JOIN [db_owner].[CoursePlanUnit] CP ON ES.CoursePlanUnitID = CP.CoursePlanUnitID --課程計劃單元表
      INNER JOIN [db_owner].[TeachPlan] TP ON CP.TeachPlanID = TP.TeachPlanID     --教學計劃表
      INNER JOIN [db_owner].[TeachDocment] TD ON TP.TeachDocumentID = TD.TeachDocmentID  --教學文件表
      INNER JOIN [db_owner].Class CL ON CL.CourseID = TD.CourseID AND CL.CourseID = 516 AND CL.ClassID = 535
      INNER JOIN [db_owner].StudyTeamInfoClass TC ON CL.ClassID = TC.ClassID
      INNER JOIN [db_owner].StudyTeamInfoUser TU ON TC.TeamID = TU.TeamID
  --add by lzh start 2010.03.20
      LEFT JOIN
      (SELECT DISTINCT ExerciseSubjectID,StudentUserID FROM db_owner.ExerciseUpload) AS EU
      ON ES.ExerciseSubjectID = EU.ExerciseSubjectID
      AND TU.StudentUserID = EU.StudentUserID
     GROUP BY TD.CourseID,TU.StudentUserID
     
     
     SELECT Convert(numeric(10,2),SUM(ER.Score*(SE.Rate/100.00))) AS ExerciseScore,ER.StudentUserID
     FROM [db_owner].CourseStatisticRate CS  --課程權重關聯表
       INNER JOIN [db_owner].StatisticRateExercise SE ON CS.StatisticRateID = SE.StatisticRateID --權重作業關聯表
       INNER JOIN [db_owner].ExerciseResult ER ON  SE.ExerciseSubjectID = ER.ExerciseContentID  --作業結果
       INNER join
       (
        select ExerciseResult.ExerciseContentID,ExerciseResult.StudentUserID
        ,MAX(ExerciseResult.ExerciseUploadID) as ExerciseUploadID
        from db_owner.ExerciseResult
        --add by liuzhh 2010.4.30 start
        where Teacher != ''
        --add end
        group by ExerciseResult.ExerciseContentID,ExerciseResult.StudentUserID
       ) as ERM
       on ER.ExerciseContentID = ERM.ExerciseContentID
       and ER.StudentUserID = ERM.StudentUserID
       and ER.ExerciseUploadID = ERM.ExerciseUploadID
     WHERE CS.CourseID = 516 AND CS.ClassID = 535 AND State = 1 AND Score > 0
     GROUP BY ER.StudentUserID
 
 
 
 

相關推薦

儲存過程執行請求優化

SELECT TD.CourseID,TU.StudentUserID,COUNT(EU.ExerciseSubjectID) AS SubmitCouont     ,COUNT(ES.ExerciseSubjectID)-COUNT(EU.ExerciseSubjectI

存儲過程被程序和第三方客戶端執行而sql server management studio執行速度正常

一次 com 客戶 正常 gem class .net 顯示 exec 來自:http://blog.csdn.net/pgbiao/article/details/22388945 原因分析:由於存儲過程是預編譯的, 在第一次執行的時候, 會生成執行計劃, 以後執行的

關於 VS 呼叫儲存過程載入和SQL 執行很快的那些事

執行同樣的儲存過程,呼叫同樣的引數 在VS 中呼叫儲存過程和傳參後,到資料載入需要20秒或更多, 在SQL直接呼叫則不到一秒,同一個儲存過程為什麼有這麼大的區別呢? 原因:儲存過程計劃失效的原因 產生原因:儲存過程涉及到的物件表結構發生改變或資料量發生大的變化。 解決方案1:     1、重啟資料

.NET 資料庫儲存過程執行程式呼叫儲存過程執行

.NET MVC+EF框架 問題描述:開發了一個功能,因資料關聯比較複雜,所以寫了儲存過程。                     查詢1萬多條資料:在資料庫直接執行儲存過程耗時2秒,在測試系統執行,也是3、5秒就顯示結果了。                     釋出

ASP.NET MVC + EF 利用儲存過程讀取大資料1億資料測試OK

 看到本文的標題,相信你會忍不住進來看看!   沒錯,本文要講的就是這個重量級的東西,這個不僅僅支援單表查詢,更能支援連線查詢,   加入一個表10W資料,另一個表也是10萬資料,當你用linq建立一個連線查詢然後

java傳list到Oracle儲存過程執行

儲存過程功能是迴圈對list遍歷,對錶進行插入操作,插入異常則進行修改操作。 可能為update語句執行慢,可是表裡有主鍵,update時主鍵為條件,走主鍵應該不會慢。 單獨把update語句拿出執行,不慢。 最終找出原因,list中物件用的為nvarchar而表裡主鍵為varchar2,執行語句時Or

WORD開啟顯示“正在執行病毒掃描”的解決方法

如果你安裝了Mathtype,執行word後,開啟相當慢,顯示“正在執行病毒掃描”!解決方法如下:到C:/Program Files/Microsoft Office/OFFICE11/STARTUP下(假定OFFICE裝在了這個路徑下),找到兩個檔案MathPage和MathType Commands 5

mysql 方法或者儲存過程執行的除錯方法

第一步:修改/etc/my.cnf檔案,找到[mysqld] 裡面加入 #執行的sql log=/tmp/logs/mysqld.log #記錄sql執行超過下面設定時間的sql log-slow-queries = /tmp/mysqlslowquery.log #

儲存過程執行速度優化

儲存過程做的報表在實際運用中時快時慢:   1.首先檢視儲存過程中是否有很多重複的實體表(一般給報表寫儲存過程,第一步就是使用臨時表);     2.如果反覆使用的實體表很多,就要考慮將這個實體表最小範圍的資料放到臨時表中,這樣就可以大大提高查詢效率

儲存過程執行成功就是修改不了資料

1: 先看看資料庫的emp表的資料型別 2: 錯誤的姿勢 create procedure update_sal(in_name in varchar2,in_new_sal in number) is begin update emp set sa

解決問題:Oracle儲存過程執行成功但資料沒有變化

Oracle儲存過程執行成功,但資料沒有化一. 檢查執行之後,是否在後面加寫一行commit;二. 檢查execute語句在where條件後面,操作的欄位是否trim(),否則很有可能執行結果不成功;示

基於C#中的類SqlCommand物件呼叫SQLServer儲存過程儲存過程執行成功但是物件方法ExecuteNonQuery()返回-1

問題如題。 【下面是一個例子】 1、儲存過程完成的功能是:插入insert一條記錄,相同主鍵的記錄存在時執行更新update的操作。儲存過程正常執行的返回值是1.(不過本文提到的問題和這個返回值沒關係。) 2、在另一個.cs檔案中使用 SqlCommand物件 呼叫方法Ex

MySQL利用自定義函式和儲存過程建立海量表並使用索引優化

昨天學習韓順平老師的視訊時明白了上一章explain的意義,為了自己的聯絡,我學著建立了一個海量表,供自己練習使用。 程式碼如下: #建立表DEPT CREATE TABLE dept( /*部門表*/ deptno MEDIUMINT UN

sqlserver儲存過程拼接sql語句執行報錯“列名無效”

今天寫儲存過程,遇到一個問題,具體如下:需求是要統計一張報表,這張表的列不固定,因此在儲存過程裡做插入語句的時候,就用到了sql語句拼接再執行。這裡拼接的insert語句是set @sql= 'insert into ##tn(prj) values('[email 

datagridView 加載數據中的數據數據顯示一行一行顯示出來 解決方案

info items pro data () style system cnblogs ems 在form_load方法中添加一下代碼 雙緩沖: 1 Type type = dataGridView_items.GetType(); 2 Sys

springboot依賴下載使用maven鏡像

ali con mave group mirrorof aliyun nexus iyu http DEA中新建了一個springboot項目,但是依賴的jar包下載很慢。 使用maven鏡像,在maven的settings.xml中加入下面一段配置就可以很快的下載到jar

Oracle 儲存過程中傳送郵件並支援使用者驗證 中文標題和內容

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Mysql插入找到了稍微快點的方法

MYSQL批量插入資料庫實現語句效能分析 假定我們的表結構如下 程式碼如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT

為什麼MySQL做查詢語句時第一次會但是第二次第三次就會變快

為什麼MySQL做查詢語句時,第一次會很慢,但是第二次,第三次就會變快 為什麼MySQL的查詢事務第一次執行會很慢,第二次,第三次就會快很多呢? 在國外,有個老外這麼提問 Hi, I have an sql query which takes 8 seconds i

通過儲存過程執行通過DBLINK的查詢語句失敗-單個語句成功--ORA-00604

客戶遇到個問題,描寫敘述例如以下:--環境是ORACLE 9.2.0.8 (語句及場景非真實了。網上找的。情況是一致的) 建立了一個DB_LINK連線還有一個Oracle資料庫。 select * from [email protected]; 單句執行沒