Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 23, 2009 12:52:35

ods
От:
Зарегистрирован: 2007-03-03
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy оператор LIKE: String Overflow - вот это сюрприз!!!

baloo
Единственное, что мне нравится - так это как SQLAlchemy взаимодействует с Paginator'ом. Ведь для того, чтобы паджинатор посчитал страницы и пр., по-любому требуется запросить весь запрос. Проще говоря, прменение rows так или иначе запрашивает ВСЕ, а потом из него берет свое. Получается долго. А алхимия делает как-то быстро и элегантно, даже запрос в 60 тысяч срок делит за секунду. Пытался отследить как, но пока ума не хватило.
SQLAlchemy устанавливает LIMIT и OFFSET для запроса.



Офлайн

#2 Ноя. 24, 2009 14:36:20

baloo
От:
Зарегистрирован: 2008-05-13
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy оператор LIKE: String Overflow - вот это сюрприз!!!

PooH
SELECT COUNT(*) …
потом
SELECT FIRST x SKIP y …
ods
SQLAlchemy устанавливает LIMIT и OFFSET для запроса
first-skip в FireBird заменено rows to, я пытался это и использовать мимо SQLAlchemy. Вот он на сервере и запрашивает все, что допускается в клаусе WHERE, а потом из него и выбирает заданные строки. Лимит-оффсет, если не ошибаюсь, это из MySQL? Сегодня вечером посижу, покопаю еще, накопаю - отчитаюсь.



Офлайн

#3 Ноя. 24, 2009 15:47:02

ods
От:
Зарегистрирован: 2007-03-03
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy оператор LIKE: String Overflow - вот это сюрприз!!!

baloo
Лимит-оффсет, если не ошибаюсь, это из MySQL?
MySQL, PostgreSQL (2 наиболее часто используемые СУБД), SQLite и ещё некторые. В стандартах такие вещи только недавно стали появляться: ROW_NUMBER() OVER в SQL2003 и OFFSET … ROWS FETCH FIRST … ROWS ONLY в SQL2008. До этого был только FETCH RELATIVE для курсоров (никогда не видел его использования в жизни, но в DB API есть методы делающие то же самое).



Офлайн

#4 Ноя. 25, 2009 06:16:37

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

SQLAlchemy оператор LIKE: String Overflow - вот это сюрприз!!!

baloo
first-skip в FireBird заменено rows to, я пытался это и использовать мимо SQLAlchemy. Вот он на сервере и запрашивает все, что допускается в клаусе WHERE, а потом из него и выбирает заданные строки.
Может быть, давно с FireBird не работал. Дык, поставьте в create_engine echo=True и посмотрите какие запросы он генерит.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version