![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 01.06.2011
Сообщений: 53
|
![]()
Добрый день.
Имеется таблица цен: Prices, с полями id, idproduct, price, pricedate. Как посредством sql выбрать последние цены, желательно с наименьшими затратами? А то способ, который использую сейчас, очень ресурсоёмкий: на тестовой базе с 20 видами товаров и порядка 2000 записей в таблице цен время на запрос - порядка полусекунды. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
для увеличения производительности обычно применяются индексирование данных.
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Если нет записей по продукту с одинаковым pricedate - по каждому продукту будет одна запись, иначе несколько с разными price. И индексы в базе по idproduct и pricedate очень желательны (evg_m очень прав)
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,184
|
![]()
Например последние 10 цен (по дате)
Код:
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 01.06.2011
Сообщений: 53
|
![]()
Имеется в виду то, что цены по товарам меняются каждый день (специфика деятельности), и получая данные по последней дате я, таким образом, получаю актуальные цены на товар. Индексация есть - проблема была именно в неоптимальности запросов. Нашёл быстрый и действенный способ:
Код:
Последний раз редактировалось andrew_jr20; 22.09.2011 в 22:02. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Ничего не понял. В какой СУБД выше приведенный запрос будет рабочим и что он вернет в этом случае? Или ТС не до конца его нарисовал?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Любая нормальная СУБД выругается на него (попытка выбрать поля, не указанные в списке group by !) Единственная СУБД, с которой я сталкивался и которая "плевала" на данное ограничение - была FPD (foxpro for dos). Она возвращала произвольные значения для полей, не указанных в group by! Так же я согласен, непонятно, каким образом этот запрос отвечает потребностям автора! |
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 01.06.2011
Сообщений: 53
|
![]()
В mysql всё отлично работает - подзапрос выдёргивает все поля (в том числе, pricedate и idproduct) в обратном порядке; после этого внешний запрос группирует по товару (idproduct), при этом в данные по каждому товару попадают последние данные, характерные именно этому товару.
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Вы хотите сказать, что у Вас сработает такой простой запрос?!! Код:
![]() |
|
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() ![]() Цитата:
http://mysql.ru/docs/man/Group_by_functions.html
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 26.09.2011 в 22:39. |
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функция генерации цены товара | brulik67 | PHP | 6 | 15.06.2011 17:28 |
Зависимость цены от количества | Alex Jordan | БД в Delphi | 0 | 31.05.2011 13:41 |
выбрать из строк последние, идущие после ключевой строки | SarahConner | Microsoft Office Excel | 8 | 29.12.2010 22:42 |
Вывод цены | AllForCS | PHP | 3 | 18.04.2010 09:18 |
Цены проектов | leffet | Свободное общение | 7 | 17.02.2010 14:13 |