powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать выборку ограниченную по сумме колонки
45 сообщений из 45, показаны все 2 страниц
Как сделать выборку ограниченную по сумме колонки
    #38614652
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем, помогите с SQL запросом.

Есть таблица с несколькими сотнями тысяч записей

id | rate

1 | 15
2 | 15
3 | 10
4 | 20
5 | 25
6 | 20
7 | 15

Мне надо сделать выборку под критерий - сумма рейтинга 32

Мне нужен вывод:

id | rate

1 | 15
2 | 15
3 | 10

т.е. как в сумме набралось 32 дальше записи выводить не надо.

Таблица InnoDB, эта операций выполняется как часть транзакции, в таблице тысячи записей поэтому необходимо чистая и быстрая реализация :)
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614670
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одним запросом возможно, но все варианты, которые мне представляеются, будут очень долго работать.
Так что лучше, имхо, дергать по одной или несколько записей и суммировать их на клиенте.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614680
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrushПривет всем, помогите с SQL запросом.

Есть таблица с несколькими сотнями тысяч записей

id | rate

1 | 15
2 | 15
3 | 10
4 | 20
5 | 25
6 | 20
7 | 15

Мне надо сделать выборку под критерий - сумма рейтинга 32

Мне нужен вывод:

id | rate

1 | 15
2 | 15
3 | 10

т.е. как в сумме набралось 32 дальше записи выводить не надо.

Таблица InnoDB, эта операций выполняется как часть транзакции, в таблице тысячи записей поэтому необходимо чистая и быстрая реализация :)

Это типа роллап задача, решается на переменных. Посмотрите топик
выборка ТОП-Н записей в FAQ. Там идет последовательная нумерация
для каждой категории (допустим для каждого язера в вашем случае).
Вместо нумерации можно сделать роллап сумму .
(надо посмотреть внимательно. Наверно надо сумму НЕ включая текушаю запись)
Это на первом прогоне. затем просто выбрать записис где роллап_сумма < 32.

Два прогона на 200К записей займет 100-300 мс на среднем железе
с правильными индексами и правильным кодом.

Если нужно на порядок быстрее, то надо будет заранее просчитывать
ролап-сумму на вставке триггером.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614685
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftОдним запросом возможно, но все варианты, которые мне представляеются, будут очень долго работать.
Так что лучше, имхо, дергать по одной или несколько записей и суммировать их на клиенте.
предлагаешь делат так?

авторSQL запрос: SELECT * ... LIMIT 0 , 1

... скрипт делает вычисления, если суммы нехватило делаем следующий запрос ...

SQL запрос: SELECT * ... LIMIT 1 , 1

... скрипт делает вычисления, если суммы нехватило делаем следующий запрос ...

SQL запрос: SELECT * ... LIMIT 2 , 1

мне красиво это некрасиво и будет убийственно для сервера, т.к. суммировать надо будет десятки и иногда сотни строк
+ еще несколько sql запросов и все это в рамках одной транзакции(( в секунду может быть несколько таких больших транзакций
или это хорошее решение?

подожду еще мнений, может буду другие варианты
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614692
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrush,

Да, примерно так.
Только лучше добавить WHERE id> максимальный_id_из_предыдущего_запроса ORDER BY id LIMIT 1 чтобы быстро дергать записи по индексу.
profitrushсуммировать надо будет десятки и иногда сотни строкВ показанном примере было всего три записи, я на это и ориентировался. Но можно читать пачками по 100 и более записей.
И, имхо, это будет легче, чем перебирать всю таблицу.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614697
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftprofitrush,

Да, примерно так.
Только лучше добавить WHERE id> максимальный_id_из_предыдущего_запроса ORDER BY id LIMIT 1 чтобы быстро дергать записи по индексу.
profitrushсуммировать надо будет десятки и иногда сотни строкВ показанном примере было всего три записи, я на это и ориентировался. Но можно читать пачками по 100 и более записей.
И, имхо, это будет легче, чем перебирать всю таблицу.

этот пример простой чтобы не грузить лишней информацией

кстати сортировка будет не по id, а по цене товара decimal(15,2) - стоит ли делать индекс для цены непонятно, цена кстати будет часто повторяться
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614698
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrushкстати сортировка будет не по id, а по цене товара decimal(15,2) - стоит ли делать индекс для цены непонятно, цена кстати будет часто повторятьсятогда по паре полей - цена, id
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614733
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все таки покажите мне пожалуйста хоть пример реализации такого запроса

написал сейчас поочередный вывод в несколько запросов с подбором LIMIT, не нравиться такой код(((
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614747
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый запрос:
Код: sql
1.
2.
3.
4.
SELECT price, id, rate
FROM mytable
ORDER BY price,id
LIMIT 100



Запрос А:
Код: sql
1.
2.
3.
4.
5.
SELECT price, id, rate
FROM mytable
WHERE price=prev_price AND id>prev_id
ORDER BY price,id
LIMIT 100

prev_id - id из последней записи последнего предыдущего запроса

Запрос Б:
Код: sql
1.
2.
3.
4.
5.
SELECT price, id, rate
FROM mytable
WHERE price>prev_price
ORDER BY price,id
LIMIT 100

prev_price - price из последней записи последнего предыдущего запроса


Порядок выполнения
1) Первый запрос
2) Считаем сумму rate, если достаточно, то выход.
3) Запрос А
4) Считаем сумму rate, если достаточно, то выход.
5) Если запрос А в пункте 3 вернул более одной записи, то переход на пункт 3.
6) Запрос Б
7) Считаем сумму rate, если достаточно, то выход.
8) Если запрос Б в пункте 6 вернул более одной записи, то переход на пункт 3.
9) Таблица окончена, выход.

Вроде не напутал...
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614774
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В буржунете подсказали вариант, отлично подошел)
единственное мне не нравиться LIMIT 0 , 999999

хотелось бы без него реализацию(


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT o1.id, o1.price, o1.value, SUM( o2.value ) 
FROM table o1
INNER JOIN table o2 ON o1.id >= o2.id
GROUP BY o1.id
HAVING SUM( o2.value ) <=2
ORDER BY  `o1`.`price` ASC 
LIMIT 0 , 999999
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614776
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если не вставить LIMIT 0 , 999999, то он будет дефолтный LIMIT 0 , 30
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614790
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrushВ буржунете подсказали вариант, отлично подошел)
единственное мне не нравиться LIMIT 0 , 999999

хотелось бы без него реализацию(


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT o1.id, o1.price, o1.value, SUM( o2.value ) 
FROM table o1
INNER JOIN table o2 ON o1.id >= o2.id
GROUP BY o1.id
HAVING SUM( o2.value ) <=2
ORDER BY  `o1`.`price` ASC 
LIMIT 0 , 999999




ну, если скорость устроит, то ОК.
Лимит 0,30 это, наверно у вас в ПХП,
в МуСКЛ-е такого дефолта нет.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614792
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

да я сглупил, это в phpmyadmin лимит такой )


этот код тоже оказалось не правильно работает
если вводишь огранчиение по целым числам то он срабатывает, а вот если ввести например 1.5 то работает не правильно
выводит записи сумма которых 1, а не 1.5

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT o1.id, o1.price, o1.value, SUM( o2.value ) 
FROM table o1
INNER JOIN table o2 ON o1.id >= o2.id
GROUP BY o1.id
HAVING SUM( o2.value ) <= 1.5
ORDER BY  `o1`.`price` ASC 
LIMIT 0 , 999999
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614803
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrush,

код , похоже, правильный.
Это у вас что-то с типом данных, может ИНТ вместо ДЕЦИМАЛ(10,2)
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614822
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbcкод , похоже, правильный.не похоже.
1) сортировка по price, а JOIN по id
2) сортировка по полю, которого нет в группировке.

А уж быстродействием тут и не пахнет.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614826
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,

Кстати, а Вы случаем не в курсе, что и как в MySQL происходит с незакрытыми курсорами? Я не в курсе, никогда не задавался таким вопросом на практике.
Потому как если есть способ со стороны клиента закрыть курсор не вычитывая его до конца, то самое простое просто читать данные в нужной сортировке и суммировать до достижения порога, а потом закрыть курсор.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614875
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftjavajdbcкод , похоже, правильный.не похоже.
1) сортировка по price, а JOIN по id
2) сортировка по полю, которого нет в группировке.

А уж быстродействием тут и не пахнет.


Сортировка идет (как я понимаю) после отсечки по HAVING,
поэтому 1) неважно.
Про 2) --- это случай когда PRICE аттрибуте однозначно зависит от
GROUP BY ИД аттрибута, поэтому его не обязательно окружать
груповой функцией.

Быстродействие тут стандартное для полного перемножения в группе.
Если скорость устроит, то и ладно.
Ускорение, может быть (а может и нет, зависит от данных):
1) перебором первых значений с быстрой остановкой на лимите (ваш первый вариант)
2) ролап на переменных (мой вариант, оставленый без внимания, наверно сложнее других)
3) расчет каждого значения на тригере при вставке.
4) может еше что-то ?
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614878
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftjavajdbc,

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

нет , я никогда не кодировал процедуры на МуСКЛ.
Мне хватило нескольких лет тежелого кодирования на PL/SQL :-)
Обычно очисткой курсора должен заниматся код фреймворка.
Выход из цикла кусора есть в любом языве высокго уровня,
так что это не должно быть проблемой.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614879
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbcОбычно очисткой курсора должен заниматся код фреймворка.
Выход из цикла кусора есть в любом языве высокго уровня,
так что это не должно быть проблемой.Так вот с точки зрения MySQL тут что происходит?
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614889
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftjavajdbcОбычно очисткой курсора должен заниматся код фреймворка.
Выход из цикла кусора есть в любом языве высокго уровня,
так что это не должно быть проблемой.Так вот с точки зрения MySQL тут что происходит?

Не в курсе. Давным давно драйверы тупо выбирали все записи и
грузили в память. Потом появились бач-подгрузки по , например 100 записей.
в любой момент позле подгрузки следуюшуй партии драйвер
может закрыть курсор. Так что ускорение точно будет
на (умном) клиенте, если
он загрузит первые 100 записей и остановить цикл через 15 записей...
и остальные 100К не будут грузится вообше.

Более детально что происходит внутри я не знаю.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38614960
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странное программирование, надежда на то что промежуточное звено должно делать что-то, что я считаю оно должно делать....
хочешь максимальное быстродействие - убирай промежуточные звенья.
всю эту логику можно переместить в хранимку.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615076
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrushПривет всем, помогите с SQL запросом.

Есть таблица с несколькими сотнями тысяч записей

id | rate

1 | 15
2 | 15
3 | 10
4 | 20
5 | 25
6 | 20
7 | 15

Мне надо сделать выборку под критерий - сумма рейтинга 32

Мне нужен вывод:

id | rate

1 | 15
2 | 15
3 | 10

т.е. как в сумме набралось 32 дальше записи выводить не надо.

Таблица InnoDB, эта операций выполняется как часть транзакции, в таблице тысячи записей поэтому необходимо чистая и быстрая реализация :)

думаю всем очевидно что кроме дёрганья записей с запасом никакой оптимизации нету.

поэтому предлагаю делать так
открывать курсор(скажем если у тебя минимальное число 1, а надо сумма 32, вот открыть курсор на 32 записи, и вычитывать по одной пока не наберёшь нужную сумму)

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

пытаться на шаманить джоинами таблицу на пару тысяч записей среди которых будут нужные 5 - будет медленее.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615096
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадявсю эту логику можно переместить в хранимку.Можно. Но не факт, что это уменьшит общее время. Ведь полученные записи из хранимки еще вытащить надо.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615162
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftвадявсю эту логику можно переместить в хранимку.Можно. Но не факт, что это уменьшит общее время. Ведь полученные записи из хранимки еще вытащить надо.

что значит вытащить из хранимки данные?
хранимка должна возвратить одни результат - конечный.
это намного меньше чем многократное обращение к базе через селект
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615168
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmiksoftпропущено...
Можно. Но не факт, что это уменьшит общее время. Ведь полученные записи из хранимки еще вытащить надо.

что значит вытащить из хранимки данные?
хранимка должна возвратить одни результат - конечный.
это намного меньше чем многократное обращение к базе через селектПо условию задачи нужно вернуть набор записей, а не "один результат".
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615294
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо условию задачи нужно вернуть набор записей, а не "один результат".


наборзаписей - это что такое?

результат селекта - это не набор записей?

хранимка может возвращать множество различных селектов, множество результатов или ещё как назови.

то что, как правило, используют хранимку для возвращения результатов вычисления только по одному селекту, не означает, что хранимка не может вернуть несколько различных селектов....
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615356
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Да, результат селекта - это набор записей.

Приложение должно получить этот набор. И по вашим словам получается, что если воткнуть посередине прослойку из хранимой процедуры, то получится быстрее. А я вот не вижу этого "быстрее".
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615428
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
быстроту можно оценить только в конкретном случае, сравнивая различные реализации
во всех других случаях - только оценочно
и что такое "быстро" - для меня это результат работы системы, всех звеньев в целом.
в применение к данному случаю, экономию времени можно получить сократив операции обращения к mysql серверу (работа драйверов и пр. "прослоек").
даже если сделать аналогичные операции в самой хранимке (циклы и прочее) уже будет быстрее.
при необходимости использование временных таблиц в памяти и пр.
теже курсоры, по большому счету они организуются в программе, обращающейся за данными к mysql, только называются иначе...
тут уже работает понимание и опыт работы с mysql
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615432
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не воткнуть прослойку их хранимки, а заменить кучу обращений к серверу через селекты, к одному обращению через хранимку.
и на выходе хранимки получить готовый, конечный результат.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615503
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяне воткнуть прослойку их хранимки, а заменить кучу обращений к серверу через селекты, к одному обращению через хранимку.
и на выходе хранимки получить готовый, конечный результат.Не кучу, а несколько селектов. Кстати, стоимость обращения к серверу не так уж и велика. И вообще ничтожна по сравнению с физическим вводом/выводом, если данные вдруг не в кэше.
А вот хранимке понадобятся накладные расходы на промежуточное сохранение результата. И еще один дополнительный селект на его чтение.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615585
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в итоге сделал через поочередное дерганье с LIMIT 0 , 1

получилось очень быстро и чисто в плане работы с транзакциями
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615587
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrushв итоге сделал через поочередное дерганье с LIMIT 0 , 1

получилось очень быстро и чисто в плане работы с транзакциямиа покажите, плиз.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615692
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftвадяпропущено...


что значит вытащить из хранимки данные?
хранимка должна возвратить одни результат - конечный.
это намного меньше чем многократное обращение к базе через селектПо условию задачи нужно вернуть набор записей, а не "один результат".

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

не уверен, но чтоб мускл не путать при сложной секции веар лучше

селект * из (запрос общий с лимит с запасом) а где --- фильтр переменной суматором
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615694
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе кучу, а несколько селектов. Кстати, стоимость обращения к серверу не так уж и велика. И вообще ничтожна по сравнению с физическим вводом/выводом, если данные вдруг не в кэше.
А вот хранимке понадобятся накладные расходы на промежуточное сохранение результата. И еще один дополнительный селект на его чтение.

ну да обращение к серверу чего?
из пхп, java и пр. через драйверы?
несколько и один - уже есть разница в несколько раз.
накладные расходы в хранимке намного меньше, чем расходы на обращение к серверу,
и откуда дополнительный селект?
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615714
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и по ходу данных...
обработка в си, ну java, ещё можно говорить о быстодействии, а интерпритаторы типа php, с обработкой данных по сравнению с mysql явно проигрывают.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615717
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторНе кучу, а несколько селектов. Кстати, стоимость обращения к серверу не так уж и велика. И вообще ничтожна по сравнению с физическим вводом/выводом, если данные вдруг не в кэше.
А вот хранимке понадобятся накладные расходы на промежуточное сохранение результата. И еще один дополнительный селект на его чтение.

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

думаю сдесь дело даже в другом.
если хранимка выбрала записи , они все в памяти, и если записей 10, то не факт что было 10 чтений с шдд(если они рядом лежали)

+ парсинг 10 селектов(если не через подготовленные запросы) тоже время. и собсвенно то что помогает хранимке влпане кеширования буферизации, не поможет 10 отдельным обращениям на сервер.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615753
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадянакладные расходы в хранимке намного меньше, чем расходы на обращение к серверу,по мне, так наоборот...
вадяи откуда дополнительный селект?хранимка же должна результат как-то наружу выдать.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615763
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftа покажите, плиз.

полностью скопировать не могу, распишу примерно как

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
function processing() {

	$q = mysql_query( "SELECT * FROM `list` WHERE `price` <= '" . sf( $b_price ) . "' AND `status` = '1' ORDER BY `price` ASC LIMIT 0 , 1" );

	if ( mysql_num_rows( $q ) > 0 ) {

		while ( $res = mysql_fetch_array( $q ) ) {

		// script logic

			if ( ) {

				// done

			} else {

				// next item process

				processing();

			}

		}

	}

}
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615768
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrush,

А почему не хотите увеличить LIMIT, чтобы сократить те самые "обращения к серверу" ?

И, кстати, программа застрянет, когда две одинаковые цены случатся. Я не просто так танцы с id делал.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615776
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

у меня ничего не застревает, сегодня тестил с одинаковыми ценами
а где именно там можно застрять?


да LIMIT увеличу до 50 или 100, скорее всего сделаю функцию которая будет логически выдавать размер лимита в зависимости от цены

если цена мелкая то 50, если огромная то 300 или 500
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615780
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profitrushу меня ничего не застревает, сегодня тестил с одинаковыми ценами
а где именно там можно застрять?тут:
Код: sql
1.
WHERE `price` <= '" . sf( $b_price ) . "'
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615782
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

я бы ещо спросил зачем рекурсия. хотя ответ понятень из строчек кода

Код: sql
1.
2.
if ( mysql_num_rows( $q ) > 0 ) {
		while ( $res = mysql_fetch_array( $q ) ) {
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615792
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftвадянакладные расходы в хранимке намного меньше, чем расходы на обращение к серверу,по мне, так наоборот...
вадяи откуда дополнительный селект?хранимка же должна результат как-то наружу выдать.

обращение к серверу идет через драйвер - это тоже время

обращение к серверу подразумевают и передачу данных обратно и данные передаются не ссылкой, а копированием с преобразованием типов. и чем больше данных - тем больше таких копирований (передача значений, а не ссылок)


а селект не должен?

данные на выходе переданного селекта и хранимки - одинаковы.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615835
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

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

только во втором случае задержки ощутимей, но принцип тотже.

на каждый запрос выделяеться память, инициализируються переменные сессии - копирование...да одно это даёт добавку для серии запросов.
...
Рейтинг: 0 / 0
Как сделать выборку ограниченную по сумме колонки
    #38615851
profitrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453miksoft,

я бы ещо спросил зачем рекурсия. хотя ответ понятень из строчек кода

Код: sql
1.
2.
if ( mysql_num_rows( $q ) > 0 ) {
		while ( $res = mysql_fetch_array( $q ) ) {


не все такие крутые программисты, пишу как могу и умею
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать выборку ограниченную по сумме колонки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]