Конференция "Базы" » Запрос к большой таблице [D7, NexusDB]
 
  • jacksotnik (04.09.12 15:35) [0]
    Всем привет. Значит сразу напишу работаю с NexusDB, размер таблицы 4 Gb, 600000 записей.
    1. Запрос вот с таким where отрабатывает прекрасно и быстро
    where B.LinkAbschluss=4135

    2. Но вот с таким where не проходит по таймауту
    where ((B.Ausgabe1 is not null) or
             (B.Ausgabe2 is not null) or
             (B.Ausgabe3 is not null) or
             (B.Ausgabe4 is not null) or
             (B.Ausgabe5 is not null)) and (B.LinkAbschluss = 5010);

    Подскажите пожалуйста как можно решить такую проблемму? Ответы типа "Nexus фуфло", знаю и без вас, но проект работает именно на нем и перевести нет возможности
  • stas © (04.09.12 15:43) [1]
    Ausgabe1-5 эти поля проиндексированы?
  • stas © (04.09.12 15:44) [2]
    Не знаю как там (в NEXUS) работает оптимизатор, возможно достаточно поменять местами условия LinkAbschluss  and (B.Ausgabe1 is not null)...
  • Ega23 © (04.09.12 16:16) [3]

    > Ausgabe1-5 эти поля проиндексированы?


    нулабельные поля в некоторых СУБД могут не индексироваться. Вроде.


    > Подскажите пожалуйста как можно решить такую проблемму?


    Наверняка есть возможность посмотреть план выполнения запроса. Вот и проанализируй, где там просадка.
  • AV © (04.09.12 17:46) [4]
    select * from (
    select * from (B)
    where (B.LinkAbschluss = 5010)
    ) A
    Where
    (A.Ausgabe1 is not null) or
            (A.Ausgabe2 is not null) or
            (A.Ausgabe3 is not null) or
            (A.Ausgabe4 is not null) or
            (A.Ausgabe5 is not null)

    Смысл - быстро сократить границу поиска
    .. LinkAbschluss = 5010 выполняется быстро по условию ..
    а потом из этого множества выбрать не null(если fullscan там пойдет, уже меньше)
  • jacksotnik (04.09.12 18:35) [5]
    Спасибо всем за ответы
  • AV © (05.09.12 11:20) [6]
    Ну а что было и исправил то в итоге?
 
Конференция "Базы" » Запрос к большой таблице [D7, NexusDB]
Есть новые Нет новых   [134430   +1][b:0][p:0]