постраничную навигацию с mySQL можно легко сделать используя в запросе LIMIT, но по сведениям 2006 года, LIMIT есть только в mySQL.
Без LIMIT можно получать все записи и ограничивать вывод средствами PHP, но это не хорошо.
Еще можно написать какой нибудь сложный запрос.
Вообщем, как делают постраничную навигацию в других СУБД?
29 апреля 2009 в 22:04
mysql в принципе можно и на несколько серверов развесить, так что не все так плохо.
29 апреля 2009 в 22:01
НуMySQL просто умрет на большой БД ) Ну не предназначен он для таких объемов ))
А студии предпочитают использовать свои CMS в нескольких случаях, во-первых Joomla и многие подобные ей, не бесплатны для коммерческого использования, во-вторых потому, что кто-то им так присоветовал, в-третьих из-за стереотипов, что своя лучше , в-четвертых так престижнее , и т.д. Причин может быть масса. Но основная потому, что так выгоднее, за свою можно бабла срубить больше )
29 апреля 2009 в 21:03
на Оракле можно не указывать ограничение. там при получении ResultSet соединение держит курсор, можно ограничить порцию данных (по крайней мере в JDBC) до кол-ва записей на странице и просто выполнить запрос, а потом по порядку вытаскивать данные, пока не достигнем нужного количества записей.
29 апреля 2009 в 21:02
Собсно я ее уже написал =)
Затрачено примерно 30-40 дней. Модульная архитектура, можно легко делать сайты. Писал я ее для одной web-студии и своего диплома.
Кстати, почему web-студии предпочитают использовать свои CMS, вместо Joomla например?
И почему MySQL лучше не использовать с большими БД?
Я читал что MySQL быстрее и первоначально создавалась для больших БД.
29 апреля 2009 в 20:05
MySQL хорош, но когда БД весит несколько гигов, тогда либо Oracle либо MS SQL. А насчет своей CMS ты подумай, а стоит ли изобретать велосипед? Конечно если ты не пишешь комерческий продукт. Одному ой как долго писать, не раз наступить на грабли предеться, решить кучу задач, которые до тебя уже решили, не имея спецификации и ТЗ будешь постоянно что-то менять в концепции CMS, переделывать сотни раз одни и те же вещи, на отлов глюков, оптимизацию уйдет куча времени, а в итоге что ты получишь? )) Быть может и напишешь, но что это будет за CMS? Аналогичные продукты, будут намного функциональнее и лучше, и не потому, что программисты которые их писали лучше, вовсе нет, потому, что такие продукты делают командами, (Одна голова хорошо, а две лучше; В споре рождается истина. и т.п.). Так что в итоге ты получишь лишь моральное удовлетворение, что это ты сделал. Но его к сожалению его не сконвертируешь в материальную выгоду.
Ну это так лирическое отступление. Дело конечно твое писать или нет.
29 апреля 2009 в 20:01
#15 пользуюсь только mySQL.
Просто пишу свою CMS и задумался, стоит ли использовать в ней универмальные запросы, чтобы ее можно было подключать к разным БД, и решил что не стоит.
29 апреля 2009 в 20:00
часто вы меняете СУБД?))
2 года использую MySQL – еще не было задач, которые не удалсоь решить на ней.
29 апреля 2009 в 19:03
Ну зачем же делать двойную работу, зачем писать для каждой БД свои запросы, если проще написать парсер, который будет исходный запрос приводить к нужному виду. А насчет библиотек абстрагирования, то тут зависит от контекста, в котором их использовать. В любом случае нужно всегда четко понимать и представлять поставленную задачу и исходя из этого уже принимать решение об использовании тех или иных технологий.
29 апреля 2009 в 17:05
догадайтесь с трех раз. неужели вы думаете, что какая-то библиотека абстрагирования от бд сможет составить хоть сколько-нибудь близкий к оптимальному достаточно сложный запрос?
29 апреля 2009 в 17:04
А можно еще проше, взять количество записей, полученных в результате запроса и поделить на количество записей на одной странице, ну и соответственно выводить по порядку на каждую страницу.
29 апреля 2009 в 17:04
А вот в некоторых CMS есть возможность выбрать БД.
Так там значит для каждой БД свой набор запросов?
И есть еще библиотеки для абстрагирования от БД,
Если их использовать то все равно надо для каждой БД свои запросы писать?
29 апреля 2009 в 17:00
#9, id было для примера.:)
А то, что неизвестно, тут уж ничего нельзя сделать. LIMIT для того и нужен, что бы не зная знать.О_о
29 апреля 2009 в 14:02
>> Если знать точное кол-во записей,
>> точно знать, что они идут по порядку
Как правило в айти системах ничего такого неизвестно =)
>> id>[пред. id] AND id<[пред. id + кол-во нужных записей]
Id это всего-лишь уникальная метка записи в таблице, Id не дает информации о какой-бы то ни было последовательности элементов в таблице. (А если и дает, то это чистая случайность )
29 апреля 2009 в 13:05
Если знать точное кол-во записей, точно знать, что они идут по порядку, можно вполне что-то типа SELECT * FROM table WHERE id>[пред. id] AND id<[пред. id + кол-во нужных записей]
29 апреля 2009 в 13:04
>> слава mysql
=))))
29 апреля 2009 в 12:05
LIMIT есть везде, только по-разному называется
в PostgreSQLвроде OFFSET вместо LIMIT
29 апреля 2009 в 11:00
слава mysql
29 апреля 2009 в 10:02
аналогично, в Oracle к результатам запроса добавляется виртуальная псевдоколонка ROWNUM, содержащая номер строки
29 апреля 2009 в 10:01
в MS SQL нужно написать:
SELECT top 20 * FROM [some_table]
WHERE [primary_key_field] NOT IN
(
SELECT top 10 [primary_key_field]
FROM [some_table]
ORDER BY [primary_key_field]
)
ORDER BY [primary_key_field]
29 апреля 2009 в 10:01
начиная с MS SQL 2005 есть функция row_number()