Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Курс валюты. Медленно ;-( Хочется быстрее / 25 сообщений из 54, страница 1 из 3
23.04.2004, 15:17
    #32494371
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Есть таблица с курсами руб/долл Rates, но курсы приведены не на каждую дату(это не курсы ЦБ), что выглядит примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
RATES
US_DAY   KURS_US
>02 /07  /02    32  ,45 
>03 /07  /02 
>04 /07  /02 
>06 /07  /02    32  ,50 
.....

Есть таблица контрактов, по которой идет запрос и для каждого контракта определяется курс на его дату с помощью вычисляемого поля:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Rate: (SELECT KURS_US FROM RATES 
        WHERE
            (RATES.US_DAY=
                        (SELECT Max(RATES.US_DAY) AS Expr1 
                          FROM RATES 
                             WHERE 
                                (RATES.US_DAY<=CONTRACT_DATE) 
                                AND 
                                (RATES.US_PRICE Is Not Null)
                         )
             ))

Работает очень медленно. Самому ничего более оптимального в голову не идет. Мож кто подскажет?
...
Рейтинг: 0 / 0
23.04.2004, 15:24
    #32494397
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
авторRATES.US_PRICE это что?
...
Рейтинг: 0 / 0
23.04.2004, 15:30
    #32494418
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2Victosha
авторэто что?
Блин, извиняйте - RATES.US_PRICE и KURS_US суть одно и тоже
...
Рейтинг: 0 / 0
23.04.2004, 15:33
    #32494429
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Индекс е?
...
Рейтинг: 0 / 0
23.04.2004, 15:42
    #32494461
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
автор Темный
Индекс е?
Неа (не ругайте - чужые таблички)
...
Рейтинг: 0 / 0
23.04.2004, 15:43
    #32494465
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
...
Рейтинг: 0 / 0
23.04.2004, 15:48
    #32494481
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
не понял
...
Рейтинг: 0 / 0
23.04.2004, 15:49
    #32494486
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
авторAND (RATES.US_PRICE Is Not Null)

это просто лишнее

индекс по RATES.US_DAY DESC неплох был бы

и еще
авторпомощью вычисляемого поля: - это где - в форме?
...
Рейтинг: 0 / 0
23.04.2004, 15:50
    #32494493
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Если индексов нет, то добиваться какого-то ускорения бесполезно.
...
Рейтинг: 0 / 0
23.04.2004, 15:57
    #32494512
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Добавь в таблицу курсов счетчик
Добавь в таблицу контрактов поле курса и сделай по нему индекс
Инициализируй поле курса номером курса
используй в запросах простой INNER JOIN
...
Рейтинг: 0 / 0
23.04.2004, 16:05
    #32494540
2ПОЙ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Не пойму суть запроса.
Особенно вот эту часть:
Код: plaintext
1.
2.
3.
4.
5.
(SELECT Max(RATES.US_DAY) AS Expr1 
                          FROM RATES 
                             WHERE 
                                (RATES.US_DAY<=CONTRACT_DATE) 
                                AND 
                                (RATES.US_PRICE Is Not Null))

На хрена?
...
Рейтинг: 0 / 0
23.04.2004, 16:12
    #32494562
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2 2ПОЙ:
ПОтому что:
автор курсы приведены не на каждую дату

Но зачем IsNull - непонятно. Комплексная защита от идиота-оператора?



Прогнано летаргическим путем, поэтому вполне нелегально, что подвижно :(
...
Рейтинг: 0 / 0
23.04.2004, 16:14
    #32494568
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2 Latuk:
авторДобавь в таблицу курсов счетчик
Добавь в таблицу контрактов поле курса и сделай по нему индекс
Инициализируй поле курса номером курса
используй в запросах простой INNER JOIN

Что это даст, акромя нормализации?



Прогнано летаргическим путем, поэтому вполне нелегально, что подвижно :(
...
Рейтинг: 0 / 0
23.04.2004, 16:15
    #32494572
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2 Latuk

поспорим, или ну его...?
-)
...
Рейтинг: 0 / 0
23.04.2004, 16:15
    #32494573
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2Victosha
Код: plaintext
AND (RATES.US_PRICE Is Not Null)

не лишнее - я ищу ближайшее снизу не пустое значение

автор- это где - в форме?
это в запросе, а не в форме

2Latuk

авторДобавь в таблицу курсов счетчик
Добавь в таблицу контрактов поле курса и сделай по нему индекс
Инициализируй поле курса номером курса
используй в запросах простой INNER JOIN
Говорю же не мои таблицы - только читать можно! И как я сделаю INNER JOIN, если в RATES не все даты есть (это видно из примера - обрати внимание, 05/07/02 пропущено)
...
Рейтинг: 0 / 0
23.04.2004, 16:18
    #32494581
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Копируй себе во временную таблицу и делай чего хочешь с ней.


Прогнано летаргическим путем, поэтому вполне нелегально, что подвижно :(
...
Рейтинг: 0 / 0
23.04.2004, 16:28
    #32494618
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Все поняли, что INNER JOIN не идет? В этом и загвоздка.
Хорошо, скопирую к себе, добавлю индекс по RATES.US_DAY и отрапортую здесь (боюсь, что уже в понедельник)
Всем спасибо
...
Рейтинг: 0 / 0
23.04.2004, 16:35
    #32494641
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
автор- я ищу ближайшее снизу не пустое значение

вам, батенька, похоже перекурить надо бы. Дать мысли круг замкнуть.

ближайшее снизу непустое значение чего? - Цены? а причем тут курс?
...
Рейтинг: 0 / 0
23.04.2004, 16:38
    #32494649
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2 Victosha:
Видимо, там след. данные:
12.04.04 - 31
13.04.04 - 31,5
14.04.04 - null
15.04.04 - 32

Либо доппроверка наличия цифирей
...
Рейтинг: 0 / 0
23.04.2004, 16:43
    #32494658
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2 Темный

думаю, там все гораздо интересней - это он, возможно натурально, накладывает условие на таблицу контрактов - ну и слава, только почему в подзапросе к таблице курсов?
...
Рейтинг: 0 / 0
23.04.2004, 16:45
    #32494664
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2Victosha
авторвам, батенька, похоже перекурить надо бы
уже
авторближайшее снизу непустое значение чего? - Цены? а причем тут курс?
Так,...смотри мою таблицу Rates, теперь контракт у меня, допустим, от 05/07/02. Если без Is NULL, то что будем иметь в качестве ближайшей снизу (т.е. меньшей) даты? - Правильно - 04/07/02. А мне нужно 02/07/02 и курс на эту дату - 32,45. Блин ну как еще разжевать?

Кстати, таблицу копирнул к себе, индекс добавил, чуть быстрее стало, но не радикально.
...
Рейтинг: 0 / 0
23.04.2004, 16:48
    #32494675
Andrey Sk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
2Темный и Victosha
А че вы все догадки строите????? Я ж вам таблицу конкретную показал и нарисовал 2 раза. там не только пустые значения есть, но и даты пропущены некоторые.
...
Рейтинг: 0 / 0
23.04.2004, 16:51
    #32494688
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
Ну... Я просто туплю, а чего Victosha развлекается - не знаю
Вопрос: зачем нужно пустое значение курса на дату???



Прогнано летаргическим путем, поэтому вполне нелегально, что подвижно :(
...
Рейтинг: 0 / 0
23.04.2004, 17:02
    #32494716
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
>Говорю же не мои таблицы - только читать можно!
Сделай свою и сливай туда содержание не своей
Я так делаю когда мне надо расширять свойства внешнего справочника
и(или) обеспечить автономность базы.
>И как я сделаю INNER JOIN, если в RATES не все даты есть (это видно из
>примера - обрати внимание, 05/07/02 пропущено)

Вычисляеш любым своим скольугодно медленным алгоритмом
нужный курс.
Береш его ID и инициируеш им ссылку в договоре

Потом в запросах связываеш договор и курсы
CONTRACT INNER JOIN RATES ON RATES.ID=CONTRACT.RATES_ID
...
Рейтинг: 0 / 0
23.04.2004, 17:03
    #32494719
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курс валюты. Медленно ;-( Хочется быстрее
авторНу... Я просто туплю, а чего Victosha развлекается - не знаю
я не развлекаюсь - я сама серьезность и благожелательность - покурить - это хороший совет - курить надо не бегом,в мыле, а как трубку или сигару курят. Организм должен расслабиться и построить для себя новую, лучшую действительность.

2 Andrey Sk
а) я не спрашиваю, зачем Вам в таблице курсов записи с пустыми значениями курса, я спрашиваю зачем вы их по ЦЕНАМ на Нулл сравниваете.

б) Вы же MAX УЖЕ написали, что вы от нулла (я уже не упоминаю, что по цене) хотите?

в) если есть охота - положите полный запрос, по огрызкам не всегда легко телепатить
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Курс валюты. Медленно ;-( Хочется быстрее / 25 сообщений из 54, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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