Вот занялся оптимизацией своего движка (УХ как громко) Почти переписал на XML (не знаю стало ли оптимальнее, но удобнее немного точно) Теперь дошло дело до оптимизации запросов. Опишу таблицу с основными элементами. Поле id(как обычно) и поле idMaster ... Остальные поля как бы не важны. Описание: Данная таблица как бы реализует древовидную структуру (не знаю как оно делается прогрессивно, это я придумал сам и замечательно работает, плохо конечно что элемент напрямую не знает о своих потомках, но это при необходимости можно дописать.. не суть). Id - Идентификатор элемента, idMaster - Идентификатор родителя. Думаю не стоит объяснять, что таким образом можно организовать достаточно функциональную структурку. Теперь. У меня есть объект который занимается разбором данного дерева (уже выкладывал тут на форуме http://php.ru/forum/viewtopic.php?t=12209). Можно заметить, что там, рекурсивно для каждого элемента выбираются его потомки, с каждым из которых потом производится то же самое. Вопрос: Может быть, будет оптимальнее выбрать сразу все записи этой таблицы, а потом в цикле пробегать по всем записям выборки и отбирать необходимые? Или (думаю) будет напрямую зависеть от размера таблицы. В общем, если у кого есть чем поделиться - пожалуйста, не стесняйтесь. Буду премного благодарен!!!
В общем не наш конек - оптимизация Ладно, реализую вторым способом, замерю результаты, но думаю что все прекрасно понимают что они будут напрямую зависеть от настроения моей винды во время замера (по прежнему жду и надеюсь что кто-нить что-нить расскажет)
Довольно дешевый и качественный способ оптимизации SQL-запросов это индексы. Правильно выбрать индекс поможет: [sql] EXPLAIN [/sql] Извините, если неправильно понял вопрос
topas у меня у хостера ограничение не только по времени выполнения скрипта есть так же лимит на количество запросов в час так что... надо все хорошенько взвесить, но добавить второй индекс конечно идея
ShamahN Чтобы уменьшить количество запросов необходимо и достаточно кэшировать результаты SQL-запросов и складывать их в файлы или БД . В большинстве средних систем так и сделано
topas не понятно. Положить результат запроса в бд чтобы его потом опять от туда доставать? смутно себе представляю.. А нет живых примеров? где можно почитать?
Для начала думаю подойдет небольшая статья: Простое кэширование SQL запросов Ну а дальше - гуглить UPD> задача тривиальная, так что на помощь в этом вопросе даже не надейтесь
PHP: <?php $hands = Humag::getHands(); while(true){ $hands->press('CTRL+C'); $hands->press('ALT+TAB'); $hands->press('CTRL+V'); } ?>
Думаю, changeSource() сработало бы правильнее... Хотя и документ тож вполне работоспособно ... Хотя нет.. Источник один и тот же А о чем это мы? оптимизация вроде... Это был оффтоп
Ну что поделаешь, если оффтоп выглядит для меня интереснее чем сама тема? Полностью согласен на changeSource()
topas Обязательно! Будет в общем три парралельные замера (очередность буду чередовать) по 10 повторений: 1 - При механизме описанном ранее; 2 - При механизме описанным тоже ранее, но немного позже; 3 - Самый первый с использованием кэша! Кроме того, будет еще выведена дополнительная информация по моментам, косвенно полученным в результатах эксперимента. А пока, принимаются ставки! Я ставлю на то что описанный в самом начале и используемый мной метод+дополнительный индекс уделает всякие кеши и уж тем более постоянный пробег по полной выборке!
ShamahN Надо оптимизировать не запросы, а принцип построения дерева! Почитай тут: http://www.getinfo.ru/article610.html