#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