2013-03-18 2 views
0

У меня есть таблица, которая является соответствующим приложением GPS в mysql. когда я выполняю приложение asp.net, он показывает ошибку плода. поэтому я решил запустить в mysql, для выполнения SP потребуется более 1 минуты (ровно 70 секунд). возможно ли разобраться в проблемах.Сократить время выполнения в MYSQL из ASP.NET

Дополнительная информация:

таблица 1: server_gpsdata (он содержит данные GPS-он блокирует каждые 10 секунд от GPS-устройства.).

select * from server_gpsdata SD 
INNER JOIN mstcab MC on MC.cabid= SD.cabid 
INNER JOIN server_tblstatus TS on TS.statusid= MC.CabStatusid 
INNER JOIN carmaster CM on CM.carid= MC.carid 
INNER JOIN cabtype CT on CT.cabtypeid= CM.sizeid 
where date(SD.cur_datetime) =current_date and 
     MC.Cabid not in (select D.cabid from trncabdriver D 
         where date(D.logintime)=current_date) and 
     SD.gpsdataid in (select max(SGD.gpsdataid) from server_gpsdata SGD 
         where date(SGD.cur_datetime)=current_date 
         group by SGD.cabid); 
+1

Возможно, нам нужно будет увидеть запрос и таблицы. –

+1

Не могли бы вы предоставить больше информации, например, соответствующий код и ваши данные об установке? – staaar

+1

Было бы неплохо попытаться увеличить тайм-аут запроса, но вам нужно будет предоставить более подробную информацию о ваших компонентах доступа к данным. –

ответ

1

Следующее должно показать существенное улучшение производительности:

select SD.*, MC.*, TS.*, CM.*, CT.* from 
(select max(SGD.gpsdataid) maxgpsdataid from server_gpsdata SGD 
where date(SGD.cur_datetime)=current_date 
group by SGD.cabid) SDM 
INNER JOIN server_gpsdata SD ON SDM.maxgpsdataid = SD.gpsdataid 
INNER JOIN mstcab MC on MC.cabid= SD.cabid 
INNER JOIN server_tblstatus TS on TS.statusid= MC.CabStatusid 
INNER JOIN carmaster CM on CM.carid= MC.carid 
INNER JOIN cabtype CT on CT.cabtypeid= CM.sizeid 
LEFT JOIN trncabdriver D ON MC.Cabid= D.Cabid AND date(D.logintime)=current_date 
where D.Cabid IS NULL 

Заметим, что оба существующие и предлагаемые запросы возвращаются все столбцы из server_gpsdata, mstcab, server_tblstatus, carmaster и cabtype Столики - запрос, скорее всего, будет работать лучше, если в запросе будут выбраны только требуемые столбцы.

+0

Согласитесь с вышеизложенным, но, вероятно, необходимо проверить наличие SD.cur_datetime – Kickstart

+0

@Kickstart: Определенно нет - проверка SDM/SGD.cur_datetime достигает такого же эффекта, а удаление условия из SD должно обеспечить доступ к записям SD через gpsdataid (который должен иметь индекс на нем). –

+0

@ Mark Bannister - mmm. Возможно. Это будет зависеть от gpsdataid и является ли это уникальным ключом для этой таблицы. А может и не быть. Например, могут быть дубликаты с разными датами, что испортит соединение из подзапроса обратно на server_gpsdata. Однако это будет целиком зависеть от дизайна таблицы, который, к сожалению, не был указан. Если бы это было так, это можно было бы также исправить, вернув дату из подзаголовка и используя это в соединении. – Kickstart

Смежные вопросы