Справка по коду Sql в Visual Studio 2008

#sql

#sql

Вопрос:

Я новичок в Visual Studio 2008 и sql, прошло чуть меньше 2 недель. Надеялся, что кто-нибудь сможет помочь очистить мой код. Это большая база данных, которая может содержать более 6000 страниц. Этот код работает с меньшими обратными вызовами, но на больших зависает.

 SELECT   vRTCAttStatusDaily.yr_cde,   
         vRTCAttStatusDaily.trm_cde,   
         vRTCAttStatusDaily.crs_cde,
         vRTCAttStatusDaily.clean_crs_cde,   
         vRTCAttStatusDaily.id_num,   
         vRTCAttStatusDaily.firstname,   
         vRTCAttStatusDaily.lastname,   
         vRTCAttStatusDaily.middlename,   
         name_master.first_name,   
         name_master.last_name,   
         address_master.phone,   
         stud_term_sum_div.udef_1a_1,   
         table_detail.table_desc,   
         vrtcreauthorizationstatus.authorization_status,   
         section_master.division_cde,   
         degree_history.major_1,   
         vRTCAttStatusDaily.StartDate,  
         vRTCAttStatusDaily.cleanclassdate,
         vRTCAttStatusDaily.attend_status,
     stud_term_sum_div.id_num AS id_num2



    FROM {oj vRTCAttStatusDaily LEFT OUTER JOIN vrtcreauthorizationstatus ON vRTCAttStatusDaily.id_num = vrtcreauthorizationstatus.id_num LEFT OUTER JOIN section_master ON vRTCAttStatusDaily.yr_cde = section_master.yr_cde AND vRTCAttStatusDaily.trm_cde = section_master.trm_cde AND vRTCAttStatusDaily.crs_cde = section_master.crs_cde},   
         faculty_load_table,   
         name_master,   
         address_master,   
         stud_term_sum_div,   
         table_detail,   
         degree_history

   WHERE ( vRTCAttStatusDaily.yr_cde = faculty_load_table.yr_cde ) and  
         ( vRTCAttStatusDaily.trm_cde = faculty_load_table.trm_cde ) and  
         ( vRTCAttStatusDaily.crs_cde = faculty_load_table.crs_cde ) and  
         ( faculty_load_table.instrctr_id_num = name_master.id_num ) and  
         ( vRTCAttStatusDaily.id_num = stud_term_sum_div.id_num ) and  
         ( vRTCAttStatusDaily.yr_cde = stud_term_sum_div.yr_cde ) and  
         ( vRTCAttStatusDaily.trm_cde = stud_term_sum_div.trm_cde ) and  
         ( stud_term_sum_div.udef_1a_1 = table_detail.table_value ) and  
         ( vRTCAttStatusDaily.id_num = address_master.id_num ) and  
         ( vRTCAttStatusDaily.id_num = degree_history.id_num ) and  
         ( ( faculty_load_table.lead_instrctr_flg = 'Y' ) AND  
         ( address_master.addr_cde = '*LHP' ) AND  
         ( table_detail.column_name = 'rtc_enroll_sts' ) AND  
         ( vRTCAttStatusDaily.yr_cde IN (@Year)) AND 
         ( vRTCAttStatusDaily.trm_cde IN (@Term)) AND
           degree_history.cur_degree = 'Y' )

ORDER BY address_master.id_num,
     vRTCAttStatusDaily.startdate,
     vRTCAttStatusDaily.clean_crs_cde
  

Будем признательны за любые советы.

Комментарии:

1. stackoverflow предназначен для решения относительно коротких задач программирования, вы должны опубликовать на codereview.stackexchange.com

2. вам нужно извлекать так много строк одновременно? Если нет, вы можете использовать, SELECT TOP x где x — количество строк для выборки. Поскольку мы не знаем структуру вашей базы данных, сервер и т.д. невозможно дать вам какое-либо предложение.

3. Спасибо, сделаю. демон, который может быть полезен, я изучу его позже.

Ответ №1:

Хорошо, оказывается, что код, написанный для vrtcattstatusdaily, вызывал сам себя в основном дважды. Я мало что мог с этим поделать, но удаление faculty_table_load из запроса заставило его работать должным образом. Теперь он может извлекать 289 тысяч строк примерно за 1,4 минуты. Спасибо Biggs

Вот поток, когда он был перемещен в codereview https://codereview.stackexchange.com/questions/2783/sql-code-help-in-visual-studio-2008