Вверх ↑
Этот топик читают: Гость
Ответов: 186
Рейтинг: 9
#31: 2011-12-22 19:43:10 ЛС | профиль | цитата
Tad писал(а):
Не запросами, а одним запросом.

То что я выкладывал лишь 1 часть расчеты, но впринципи они не сложные.

Tad писал(а):
Число записей в БД ? (для интереса)

Пока на расчет идет 15000 кодов, скоро планируется увеличение в 2 или 3 раза.
Всего записей 37000.

Вот схема по которой все рассчитывается.
code_26287.txt

Здесь структура 3 таблиц которые участвуют в расчетах.
http://forum.hiasm.com/forum_serv.php?q=56&id=2804

Попробую сам потестировать запросы, может и правда не прибавит скорости моя затея.

карма: 0

0
файлы: 1code_26287.txt [16.3KB] [241]
Ответов: 16884
Рейтинг: 1239
#32: 2011-12-22 22:37:58 ЛС | профиль | цитата
Chipset, а за тегами url далеко ходить ? [url]http://forum.hiasm.com/forum_serv.php?q=56&id=2804 [/url]
Заодно объясни что за повторы и с чем они связаны ?
povtor.png
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1povtor.png [5.5KB] [203]
Ответов: 186
Рейтинг: 9
#33: 2011-12-23 07:21:21 ЛС | профиль | цитата
Tad писал(а):
Заодно объясни что за повторы и с чем они связаны ?


Данная информация нужна для дальнейших расчетов.
В схеме которую отправил выше, высчитывается индекс, а потом просто умножается на каждое значение из "повторов"

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

Tad писал(а):
Chipset, а за тегами url далеко ходить ?


Вообще то хотел картинку вставить, но не получилось.
Не догоняю что надо между поставить.

карма: 0

0
Ответов: 758
Рейтинг: 112
#34: 2011-12-23 12:19:21 ЛС | профиль | цитата
Chipset, Я не специалист
Tad может что-то лучше посоветует
но выскажу, что узкое место у тебя тройная выборка из БД
Например
SELECT kodres FROM mattek where kodpredst='%2' and predstico>'0' and sredotp<>'0'
UPDATE mattek SET sredotp=(SELECT round(sum(otp*v_post)/sum(v_post),2) FROM resurs WHERE kodres="%1" AND otp<>"" AND otp<>"0") where kodres="%1"
Перебирает все значения mattek, потом опять перебирает промежуточно mattek и для каждого этого значения делает запрос к resurs.
Попробуйте использовать временные таблицы. Мне в свое время помогло ускорить выборку

карма: 1

0
34
Сообщение
...
Прикрепленные файлы
(файлы не залиты)