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

кекс

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

Возможно это и не правильно, но не знаю как иначе сделать. получается в запросе еще 3 подзапроса. правильно ли это? Или нужно искать другое решение? Помимо этого, там еще в while есть запрос к базе. Как правильно поступить?

PHP:
SELECT *,
(SELECT familiya
FROM `sotrudnik`
WHERE id=
(SELECT ck_sotrudnik
FROM chei_klient ck1
WHERE ck1.ck_id=
(SELECT MIN(ck_id) 
FROM chei_klient ck2
WHERE kl_id=ck2.ck_klient
) 
)
)
AS `pervsotr`
FROM .....
WHERE ....
 

Nicholas

Новичок
правильно раставить индексы
избавиться от дикой вложенности
запросы в цикле - зло

PS Если скрипт работает больше 30 секунд, что ж он делает? Неужели расчитывает погоду на завтра?
 

Gas

может по одной?
не вижу связи с тремя вложениями..
думаешь с правильными индексами и без них скорость выполения будет одинаковой ?

без explain'а тут ничего не сказать, один уровень вложенности можно заменить join'ом

там еще в while есть запрос к базе
и что за запрос ?
 

кекс

Новичок
Автор оригинала: Gas
думаешь с правильными индексами и без них скорость выполения будет одинаковой ?
думаю без них будет на порядок медленнее.

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



и что за запрос ?
выборка в зависимости от результата первого запроса.. связать их в один при помощи LEFT JOIN мозгов не хватает. Хотя в первом запросе эта таблица привязана то же. А тут разные варианты выбора из одной таблицы но в одну строку. знаний маловато:(
 

Gas

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

кекс

Новичок
PHP:
-----------------
id obyekt klient naz

1 	3560 	58	 1
2 	2978 	59	 1
3 	2978 	59	 2
----------------------------
как выбрать в одну строку для объекта 2978 naz 1 и naz 2
выглядит примерно так
-----------------------------------------------------
| № 	|	 obyekt |	 klient | 	naznachenie |
| 1   	|   3560 	|   58  	|	1  |   пусто |
| 2  	|   2978  	|   59   	| 	1  |    2   |
-----------------------------------------------------
у одного объекта в базе несколько назначений там и 3 и 4 и 5 есть и.. вобщем мне пока что надо вывести 1 и 2
 

fixxxer

К.О.
Партнер клуба
>obyekt | klient | naznachenie

когда я буду президентом вселенной, за такое буду расстреливать без суда и следствия. :)
 

кекс

Новичок
вот поэтому ты никогда не будешь президентом.. даже в своем доме..
 
Сверху