Я новичок в sql, поэтому мне нужна ваша помощь! Мне нужна хранимая процедура, чтобы получить определенное количество статей с некоторым смещением и общее количество их, чтобы сделать разбиение на страницы ... - это правильный код или есть лучший способ? Сколько запросов будет выполнено, 1 для ctid, 1 для всего и 1 для данных контента?Сохраненная процедура для получения некоторых строк и всего
DELIMITER $$
CREATE PROCEDURE `getArticles`(`offset` INT, `count` INT)
BEGIN
DECLARE ctid, total INT;
SET ctid = (SELECT id FROM content_types WHERE name='article');
SET total = (SELECT COUNT(*) FROM content WHERE content_type = ctid);
SELECT *, total FROM content
WHERE content_type = ctid
LIMIT count
OFFSET offset;
END $$
DELIMITER ;
thx для такого подробного ответа, но мне не нужно количество строк, возвращаемых запросом. Мне нужны данные таблицы контента с лимитом возвращаемых строк и общим количеством всех строк. – Kirill
Вы не понимаете. 'FOUND_ROWS()' когда включен 'SQL_CALC_FOUND_ROWS' возвращает ** точно ** то, что вы задали, - общее количество строк ** ALL **, как если бы' LIMIT' не применялся к запросу, и он быстрее выдавал другой запрос даже завернутый в подзапрос. Взгляните на рабочий пример. – peterm
извините, не читал до конца ... Но мне все еще нужно сделать дополнительный запрос, чтобы получить @total, правильно ли я понял? – Kirill