У меня длинный запрос с несколькими соединениями, которые были отключены. Я уже создал Sponsor_Id
(используется в WHERE
) во всех таблицах спонсоров в качестве индекса. График профилировщика показывает ужасную медлительность (75% времени при отправке данных).MYSql Query - # 2013 - Потерянное соединение с сервером MySQL во время запроса
Вот запрос:
SELECT GROUP_CONCAT(DISTINCT masterdetail.eventid) as eventids
FROM tblsponsor_slave_eventprefrencesdetail userprefrence
INNER JOIN tblsponsor_slave_sponsor_eventprefrence_category
userprefcategory
ON userprefrence.SponsorId = userprefcategory.SponsorId
INNER JOIN tblsponsor_slave_sponsor_eventprefrence_locationtarget
userpreflocation
ON userprefrence.SponsorId = userpreflocation.SponsorId
INNER JOIN tblsponsor_slave_sponsor_eventprefrence_type userprefEventType
ON userprefrence.SponsorId = userprefEventType.SponsorId
INNER JOIN tblsponsor_slave_sponsor_eventprefrence_audienceprofile
userprefAudiProfile
ON userprefrence.SponsorId = userprefAudiProfile.SponsorId
INNER JOIN tblsponsor_slave_sponsor_eventprefrence_industry
userprefIndustry
ON userprefrence.SponsorId = userprefIndustry.SponsorId
INNER JOIN tblsponsor_slave_eventprefrencesdetail userprefdetail
ON userprefrence.SponsorId = userprefdetail.SponsorId
INNER JOIN tblsponsor_slave_sponsor_eventprefrence_audiencetype
userprefAudiType
ON userprefrence.SponsorId = userprefAudiType.SponsorId
INNER JOIN tblsponsor_slave_eventprefrence_agegroup userprefAgeGroup
ON userprefrence.SponsorId = userprefAgeGroup.SponsorId
INNER JOIN tblevent_slave_event_address_city eventcity
ON userpreflocation.Sponsor_EventPrefrence_LocationTarget =
eventcity.Event_Address_City
INNER JOIN tblevent_slave_event_audienceprofile eventAudiProfile
ON userprefAudiProfile.Sponsor_EventPrefrence_AudienceProfile =
eventAudiProfile.Event_AudienceProfile
INNER JOIN tblevent_slave_event_industrycatered eventindustry
ON userprefIndustry.Sponsor_EventPrefrence_Industry =
eventindustry.Event_IndustryCatered
INNER JOIN tblevent_slave_agegroup eventagegroup
ON userprefAgeGroup.Sponsor_AgeGroup_Type =
eventagegroup.Event_AgeGroup_Type
AND userprefAgeGroup.IsExist = eventagegroup.IsExist
INNER JOIN tblevent_master_detail masterdetail
ON eventcity.EventId = masterdetail.EventId
INNER JOIN tblevent_slave_others eventothers
on masterdetail.EventId = eventothers.EventId
AND masterdetail.Event_Category =
userprefcategory.Sponsor_EventPrefrence_Category
AND masterdetail.Event_Type =
userprefEventType.Sponsor_EventPrefrence_Type
AND eventothers.Event_Gender =
userprefdetail.Sponsor_EventPrefrence_Gender
AND eventothers.Event_TargetAudience =
userprefAudiType.Sponsor_EventPrefrence_AudienceType
AND eventothers.Event_Sponsor_Range_Min <
userprefrence.Sponsor_EventPrefrence_Range_Max
WHERE userprefrence.SponsorId = 164
AND eventagegroup.IsExist = 1
AND masterdetail.Event_StartDateTime > '2015-08-27'
AND masterdetail.Event_Category in ("1", "2", "3", "7",
"9", "10", "11")
AND eventcity.Event_Address_City in ("1", "3", "54")
AND masterdetail.Event_Type in ("2", "3", "4", "5", "7")
AND eventindustry.Event_IndustryCatered in ("13", "18")
AND eventAudiProfile.Event_AudienceProfile in ("1", "2", "10")
опубликуйте объяснение по вашему запросу. я не понимаю, если запрос «только» медленный или вы потеряли соединение с базой данных –
, вы можете попытаться изменить значение «max_allowed_packet» в my.cnf на более высокое значение, чтобы исправить его. –
max_allowed_packet не может быть причиной ... что говорит ваш/var/log/messages? Убивает Mysql из-за OOM? Возможно, вам потребуется настроить настройки буфера/кеша ... – BK435