sqlite объединение всех оптимизаций

У меня есть запрос базы данных sqlite, который выглядит примерно так:

SELECT
    origin,
    destination,
    weight,
    rate,
    0 as group
    from groupAZones, groupARates
    where
    tms = groupZone

union all

SELECT
    origin,
    destination,
    weight,
    rate,
    1 as group
    from groupBZones, groupBRates
    where
    tms = groupZone

    union all

SELECT
    origin,
    destination,
    weight,
    rate,
    2 as group
    from groupCZones, groupCRates
    where
    tms = groupZone

    union all

SELECT
    origin,
    destination,
    weight,
    rate,
    3 as group
    from groupDZones, groupDRates
    where
    tms = groupZone

Есть ли хороший способ оптимизировать такой запрос? Я пытаюсь создать простое представление, объединяющее эти 4 таблицы. При использовании в качестве запроса представления запросы к представлению занимают около 13 секунд.

Я попытался создать индексы для 4 таблиц, но это не помогло.

Я новичок, когда дело доходит до SQL, я знаю достаточно, чтобы делать простые вещи, но я все еще изучаю продвинутые приемы.

Любые указатели или информация будут полезны.


person James Jones    schedule 21.03.2013    source источник
comment
О том, с каким объемом данных вы имеете дело?   -  person jhewlett    schedule 21.03.2013
comment
Если я создам таблицу, используя тот же запрос, она составит около 4,5 миллионов записей и около 125 МБ на диске.   -  person James Jones    schedule 21.03.2013
comment
Покажите вывод EXPLAIN QUERY PLAN для этого запроса.   -  person CL.    schedule 21.03.2013
comment
CL эта команда фактически позволила мне обнаружить, что два моих индекса не используются! После исправления индексов запрос стал очень быстрым. Спасибо за помощь! Я проголосовал за комментарий.   -  person James Jones    schedule 25.03.2013


Ответы (1)


CL указала, что я должен запустить команду EXPLAIN QUERY PLAN. Это привело к открытию, что два из 4 индексов не использовались.

Спасибо КЛ!

Мне все еще интересно, есть ли лучший способ сделать этот запрос, но пока он делает то, что мне нужно.

person James Jones    schedule 25.03.2013