2013-10-08 2 views
1

У меня есть запрос в firebird, я новичок в использовании firebird и index. Я хочу оптимизировать свой запрос с помощью индекса. Но я не знаю, как, вот мой запрос:Как использовать индекс в firebird

SELECT 
     a.TESTER, 
     a.LOT_ID, 
     /* DATEDIFF (SECOND FROM START_LOG_TIME TO ENDLOGTIME) AS ELAPSED_TIME */ 
     b.TEST_DESC, 
     COUNT(TEST_DESC) AS TOTAL_DESC, 
     MIN(MEASUREMENT) AS MIN_MEASUREMENT, 
     AVG(MEASUREMENT) AS TOTAL_MEASUREMENT, 
     MAX(MEASUREMENT) AS MAX_MEASUREMENT, 
     AVG(LL) AS LL, 
     AVG(UL) AS UL, 
     SUM(IIF(MEASUREMENT<LL,1,0)) AS RESULT 

FROM T_TABLE1 a 
INNER JOIN T_TABLE2 b 
     ON a.ID = b.TBL1_ID 
     AND a.TESTER = b.TESTER 
     AND a.LOT_ID = b.LOT_ID 
WHERE b.GRP = 'Contact' 
GROUP BY 
     a.TESTER, 
     a.LOT_ID, 
     b.TEST_DESC 

и T_TABLE2, я попытался создать индекс с именем TEST_DESC_IDX. Я создал индекс для поля TEST_DESC.

СПАСИБО за помощь!

+0

Да, я уже создал индекс, но на этот раз. Я не знаю, как использовать индекс вместе с INNER JOIN и GROUP BY. Я получил некоторую ошибку, когда поставил PLAN в свой запрос. – aiipee

+2

Обычно вы не заставляете движок использовать определенный индекс, но пусть оптимизатор выбирает лучший план, доступный в то время. Другими словами, двигатель автоматически использует лучшие доступные индексы. Вы используете предложение PLAN только в очень редких случаях. – jachguate

ответ

1

Мой комментарий на my answer to your previous question является ответом на этот:

сам Firebird автоматически выберет индекс, если это уместно (и, как ожидается, повысить производительность). Вы можете указать явный план, если считаете, что Firebird ошибочен, но это расширенный материал, который можно лучше игнорировать, если вы новичок в нем.

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