Таблицы против запросов

Опубликовано: 9 июля 2009.
Автор: koreec.


Просмотров: 434.
Подписаться на комментарии по RSS.

Попробовал перейти от схемы "таблица главная - таблица детальная" к схеме "один сложный SQL запрос". На примере выборки книг одного автора это выглядит так - Таблица авторов (главная) - Список авторов (обеспечивает отношение одна книга один автор и наоборот) - Таблица книг. В MyHomeLib  используются три соотвественно связанных компонента TTable. Если заменить это на SQL, получится трижды вложенный запрос типа 

Select * FROM Books WHERE Id IN

  (Select BookID FROM Author_List WHERE AuthID IN

    (SELECT ID FROM Authors WHERE Name = "Петя"));

Так вот, в AbsoluteDB второй вариант на одной и той же базе работает в десятки раз медленнее! Видимо, нечто аналогичное происходит и в Firebird, хотя там запрос отрабатывается несколько быстрее.

Комментариев: 2

  1. 11.07.2009 в 06:42:03 | #1

    Select B.* FROM Books B, Author_List AL, Authors A WHERE B.Id = AL.BookID AND AL.AuthID = A.ID AND A.Name = "Петя";

    вроде не ошибаюсь. Если на это дело построить индексы, то быстро должно работать. затраты на временные таблицы и сортировку?

  2. koreec
    11.07.2009 в 15:30:16 | #2

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

Оставьте комментарий!

Комментатор / хотите им стать

Чтобы стать комментатором введите email и пароль. Напишите комментарий. В дальшейшем ваша связка email-пароль, позволит вам комментировать и редактировать свои данные. Не забудьте про активацию (инструкция придет на ящик, указанный при регистрации).

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question