Индексирование на MySQL - PullRequest
       5

Индексирование на MySQL

0 голосов
/ 10 октября 2011

У меня есть массовый запрос с подзапросом.Мой запрос работает нормально, когда я запускаю его на сервере разработки, но когда я пытаюсь выполнить его на работающем сервере, на запрос уходит слишком много времени.Я думаю, что это из-за больших данных на живом сервере.Может ли кто-нибудь помочь мне о том, как индексировать запрос на MySQL, чтобы он уменьшил время выполнения.

Вот мой запрос:

SELECT prd.fldemployeeno AS Empno,
       (SELECT fldemployeename FROM tblprofile prf WHERE prf.fldemployeeno = prd.fldemployeeno LIMIT 0,1) AS Empname,
       '01' AS `Week`,
       COUNT(DISTINCT isAud.fldid) AuditedFiles, 
       COUNT(qua.seqid) ErrorCount, 
       COUNT(DISTINCT qua.fldid) OrdersWithError
  FROM tbldownloadITL dwn 
 INNER JOIN tblproductionITL prd 
    ON dwn.fldid = prd.fldglobalid
 INNER JOIN (SELECT p.fldemployeeno,fldglobalid,p.fldstarttime,COALESCE(q.fldstarttime,p.fldstarttime) `AuditDate`
               FROM tblproductionitl p
               LEFT JOIN tblqualityaudit q
                 ON p.fldemployeeno=q.fldemployeeno
                AND p.fldstarttime=q.fldprodstarttime
                AND p.fldglobalid=q.fldid
              WHERE p.fldprojectgroup='PROJGROUP') temp
    ON prd.fldglobalid=temp.fldglobalid
   AND prd.fldemployeeno=temp.fldemployeeno
   AND prd.fldstarttime=temp.fldstarttime
 INNER JOIN tblisauditedITL isAud 
 USING (fldid)
  LEFT JOIN tblqualityaudit qua 
    ON qua.fldid = dwn.fldid
   AND qua.fldbusunit = dwn.fldbusunit
   AND qua.fldprojectGroup = dwn.fldprojectGroup
   AND qua.fldemployeeno = prd.fldemployeeno
   AND qua.fldprodstarttime = prd.fldstarttime
   AND qua.flderrorstatus != 'NOT ERROR' 
  LEFT JOIN tblerrorcategory 
 USING (flderrorcategoryid) 
  LEFT JOIN tblerrortypes
 USING (flderrortypeid)
 WHERE dwn.fldbusunit = 'BUSUNIT'
   AND dwn.fldprojectGroup = 'PROJGROUP'
   AND temp.AuditDate BETWEEN '2011-07-29 00:00:00' AND '2011-07-29 23:59:59'
 GROUP BY prd.fldemployeeno 
 ORDER BY Empname

Вот также описание запроса:

enter image description here

1 Ответ

1 голос
/ 10 октября 2011

Я бы предложил установить Sphinx на ваш сервер, если у вас есть доступ. Таким образом, вы можете иметь индексированный ресурс на кончиках ваших пальцев для чрезвычайно быстрого поиска, кроме того, вы можете добавить выполнение так называемого «дельта-индекса», чтобы обеспечить возможность обновления базы данных MySQL в реальном времени. Это очень настраиваемый. Надеюсь, это поможет вам.

http://sphinxsearch.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...