|
|
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
Люди! Такой вопрос: есь талица Справочника валют КодВалюты, ДатаС, ДатаПо, КурсРублей и журнал операций Дата КодВалюты СуммаВалюты Как легче всего получить в запросе данные вида: Дата КодВалюты СуммаВалюты КурсРублей СуммаРублей ??? Пробую подчиненный - где-то не так... ХЭЛП!!! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 14:03 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
Наверное, плохо объясняю... Есть журнал опреаций с датами и справочник валют (интервалы дат). Как получить в одном запросе результат из журнала опреаций (дата и проч. радости) и выцепить на эту (разную в каждой записи результирующего набора) дату курс указанной в записи валюты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 15:30 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
А что является ключем/уникальным индексом для справочника валют? например будет две такие записи в справочнике валют USD 03.08.03 04.08.03 30.00 USD 04.08.03 05.08.03 33.00 На 04.08.03 какой будет курс в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 15:45 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
Знач так, энтот вопрос многоим покоя не дает. Есть два решения и оба - плохие. 1. Заведи вспомогательную буферную таблицу, которая должная изменяться тригеррами из основных. В этой таблице храни курс на КАЖДЫЙ ДЕНЬ. Ей же и будешь пользоваться для запросов. 2. Напиши функцию, которая возвращает курс любой валюты на заданный момент, и пользуйся ей в запросах. Вариант более экономный и правильный, но работает ОЧЕНЬ МЕДЛЕННО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 15:52 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
А объясните мне глупому, зачем такая хитрая таблица. По моему проще КодВалюты, Дата, Курс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 16:02 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
2 vdimas В этой таблице храни курс на КАЖДЫЙ ДЕНЬ А еще лучше на каждый час, минуту, секунду и т.п. Щастья вам 2 VIG Выкинь дату "ПО", а дальше - пишешь запрос, который тебе вернет курс нужной валюты на нужный день Как - уже обсуждалось. Можно одним запросом (в 97-м - с извратом), лучше с подзапросом. Типа находишь максимальную дату "С", не превышающую заданную, и берешь оттуда курс. Ну и используй этот запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 16:03 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
Большое спасибо всем откликнувшимся, особенно уважаемому Лоху за конструктивное предложение. И большущее спасибо тому, кто нароет и кинет в этот топик ссылку на упоминаемый Лохом вариант - не находится он... 8(((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 17:02 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
Можно и одним запросом. По всем полям группировка, по полю Курс - Last, по полю Дата - условие - <=............ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 18:24 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
2 Л.П А причем здесь VIG ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2003, 19:05 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
2 VIG Извини, борода, обознался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 09:06 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
мля, что за тупой чел Лох Позорный прикололся над одним из моих вариантов и тут предложил доверчивому вопрошающему вариант, аналогичный моему второму. :) Когда в таблицах несколько сотен тысяч записей, то мой второй вариант (он же предложенный позже лохом) РЕАЛЬНО НЕ РАБОТАЕТ. Т.е. работает, но как-то весьма постепенно. Большинство крупных проектов используют в этом случае кэш с разной степенью детализации (сутки или 12 часов). Это старый и известный способ. В году 365.25 дней в среднем. Даже если у тебя десяток валют и база используется пяток лет, то размер этой таблицы по нынешним меркам будет смехотворен. Зато все запросы на больших объемах данных с применением второго варианта работают в сотню раз быстрее. Лох, ты нахрена людей в заблуждение вводишь? Ну сбацает он сейчас по-быстрому самый легкий вариант. Через пол-года его дернут за яйцо и спросят: "ты че программер херов тут наваял, анаста3.14здило ждать как твое корыто работает..." Под MS SQL целостность буферной таблицы легко контроллируется триггерами. На всяких MDB целлостность никак не контроллируется, извращаются, обычно как могут (в погоне за целлостностью). Но это уже отдельный топик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 10:31 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
читать: Зато все запросы на больших объемах данных с применением первого варианта (кеш) работают в сотню раз быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 10:33 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
На ринг вызываются... В "Красном" углу - Лох Позорный В "Синем" углу - vdimas Гонг! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 10:40 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
Да куда уж мне глупому до мудрого вдимаса Про твои советы мое мнение в соседнем топике Если ты не видишь разницы между использованием функций в запросе (что действительно тормозит) и написанием простого запроса - флаг тебе в руки Мне даже интересно поглядеть на такой крупный проект, в котором система перестанет курс нормально выдавать если его ввести более чем один раз в день. Ну или чаще чем раз в 12 часов, или какая у тебя там степень детализации. Так что, парень (дефка?), храни курс на каждую миллисекунду. Щастья вам. 2 VIG Профессионалы с любителями не боксируют Это ж избиение получится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 10:42 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
2 Лох Позорный Мда... углубления в словоблудия ... Если ты не видишь разницы между использованием функций в запросе (что действительно тормозит) и написанием простого запроса - флаг тебе в руки Когда я предлагал функцию, то имел ввиду функцию на MS SQL, а они в запросах нормально работают, как часть запроса, можешь проверить. Суть не в этом - вставь тело функции непосредственно в запрос (не в этом ли я должен усмотреть разницу? :) ) По быстродействию - одна херня, не устраивает. Я уже перепробовал все варианты еще 2 года назад. Кэширование - на порядки быстрее. (Хоть слово "кеширование" отдает ненормализацией и геммороем) Дело в том что сервак, на каждую строчку интересуемых данных, для который известна сумма, дата и код валюты, должен в этом запросе дважды просмотреть таблицу из предложенного тобою и мною варианта хранения только изменений (это очевидно, но для кого не очевидно, можно на екзекушн план посмотреть). У меня так было в одном из первых проектов. Работало нормально, пока количество строк в основных таблицах не стало приближаться к нескольким сотням тысяч. Мля, никто не говорит что этот вариант не сработает. На заведомо малых объемах он вполне потянет. А на реальных - херушки. Про твои советы мое мнение в соседнем топике Насчет второго топика видел еще вчера, но как-то впадлу отвечать на очевидное. Ты, видно, имеешь манеру не особенно вдаваться в смысл прочитанного, сразу тянет поотвечать, "поучаствовать". Но раз уж речь зашла - ща отвечу в том же топе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 11:00 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
Я тут на сервере табличку сгенерил с пару десятками мильонов записей. При правильном индексировнаии - время выполнения какое-то смешное пара десятков (редко сотен) миллисекунд. А тут 100 тыс. записей - и тормоза. Я энту табличку как-нибудь до сотен мильонов записей доведу - не думаю что время сильно увеличиться. Правда места на диске жалко :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 11:08 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
есь талица Справочника валют КодВалюты, ДатаС, ДатаПо, КурсРублей Зачем человека с пути (истинного) сбиваете? Предложенный им вариант хранения инфы очень даже хорош (в случае, если [ДатаПо] поддерживается автоматом таким образом, чтобы небыло ни нахлестов ни дырок в последовательности, на триггерах это можно организовать). Хорош он и по производительности (курсы на любой день достаются обычным between), и по объему хранимой инфы (не надо на каждый день данные хранить)! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 11:08 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
правда для курсов валют я использую сейчас вариант №2 vdimas (он же - вариант ЛП). Сейчас записей в таблице 7500 - производительность хорошая. А вот для других, более сложных задач используется вариант с интервалами дат. Сейчас в одной из таких таблиц под 3,5 млн. записей - полет нормальный ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 11:13 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
2 am Зачем человека с пути (истинного) сбиваете? Предложенный им вариант хранения инфы очень даже хорош вот и я про то же 2 Сенин Виктор А тут 100 тыс. записей - и тормоза Тут - это где? 2 vdimas Кэширование - на порядки быстрее А я и не говорил что медленнее. Но НЕВАЖНО НАСКОЛЬКО БЫСТРО РАБОТАЕТ ВАША ПРОГРАММА, ЕСЛИ ОНА РАБОТАЕТ НЕПРАВИЛЬНО Насчет второго топика видел еще вчера При том, что оно (мое мнение) появилось там только сегодня? С ума сойти... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 11:19 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
2ЛП >>А тут 100 тыс. записей - и тормоза >Тут - это где? Это я для vdimas'a было сооБчение По поводу цитаты:"Работало нормально, пока количество строк в основных таблицах не стало приближаться к нескольким сотням тысяч. " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 11:22 |
|
||
|
Около справочника курсов валют...
|
|||
|---|---|---|---|
|
#18+
По поводу замечания am (надо ли хранить дату "ПО"). Только что дошло. Хорошее замечание. Тянет на классический пример сознательной денормализации для увеличения производительности. (во завернул ) Что ж поделать, иногда приходится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2003, 11:36 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32228314&tid=1680077]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 405ms |

| 0 / 0 |
