![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Это сообщение отредактировал(а) kshyms - 31.12.2008, 17:59 |
|||
|
||||
| MystDeim |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 22.10.2007 Где: Россия->Юбилей ный Репутация: нет Всего: нет |
Причём здесь перл, если Вам говорят про запросы к базе данных?
Попробуйте сделать кэширование страниц или каких-то данных, которые требуют сложной обработки. --------------------
Учебные материалы для студентов http://studlab.org |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
вопрос решен
Это сообщение отредактировал(а) kshyms - 30.1.2009, 11:44 |
|||
|
||||
| krundetz |
|
||||||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
kshyms, то что ты привел конечно интересно, но не мог бы ты сам вытащить из своего кода sql запросы, привести структуру таблицы и пояснить что каким запросом пытаешься вытащить, как потом результат используешь и почему именно так. Это поможет людям быстрее понять что у тебя возможно оптимизировать и дать дельный совет.
сдесь явная избыточность, в первом запросе количество строк в таблице считай не по всем полям, а по какому нибудь одному.
аналогично оптимизировать это
да не увидел у тебя защиту от SQL-инекций Это сообщение отредактировал(а) krundetz - 31.12.2008, 18:15 |
||||||
|
|||||||
| kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Я понял надо загружать не все подряд, а только то, что надо! Это и будет оптимизацией запросов к базе...
Это сообщение отредактировал(а) kshyms - 1.1.2009, 16:45 |
|||
|
||||
| taral |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
На сколько я знаю нужно наоборот count(*) делать для оптимизации. Поскольку так оно считает только строки в таблице, не выбирая значения вообще. А если считать по конкретному столбцу, то сначала выбираются значения не нулевые и возвращается их количество. Потому запрос
Будет быстрее чем
|
||||||
|
|||||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
taral, может ты и прав надо поэкспирементировать, но вродебы вариант который я привел вооще не считает строки а берет их количество из индекса
|
|||
|
||||
| kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Здесь вычитал про оптимизацию а может limit для загрузки строк применить и разбить таблицу на несколько частей и по очереди как новый запрос загружать и еще лишние поля убрать которые не используются?
А может заменить SELECT COUNT(*) ... на select_expression (Выражение select_expression задает столбцы, в которых необходимо проводить выборку) будет ли быстрее работать? Это сообщение отредактировал(а) kshyms - 2.1.2009, 08:10 |
|||
|
||||
| egrik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 10.11.2006 Где: Voronezh Репутация: нет Всего: 1 |
Нет никакого желания разбираться в каше приведенного вами выше кода. Но, а может быть будет достаточно выставить индексы на таблицах? Покажите структуру базы данных.
|
|||
|
||||
| taral |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Я уверен что нет.
А ты его что совсем не применял?
Если ты имеешь в виду разбить таблицу на несколько таких же то могу сказать вот что. НИКОГДА ДАЖЕ НЕ ДУМАЙ так делать. Это вообще сумасшествие какое то...
Определенно да. |
||||||||
|
|||||||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
не совсем понял данное высказывание. Если у нас таблица скажем на 100000 строк и постоянно мы оперируем только 1000 последних, то само по себе напрашивается разделение таблицы на две постоянно запрашиваемых и обновляемых данных и архивной где данные обновляются и запрашиваются крайне редко! |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
kshyms говорил про 34000 полей. На моем компьютере, который не ровня серверам, запрос на выборку из 40 000 меньше секунды уходит. А он говорил про 10 сек. Про разбивание таблиц с его слов я понял что он хочет на несколько разбивать (больше 2) Смысл в разбиении таблицы на 2 я вижу в том случае если 2-я это сбор всех данных. В 1-ю мы добавляем новые. И периодически из 1-й мы переводим данные во 2-ю. Это уменьшает нагрузку. Поскольку затрагивается основная база не каждый раз когда происходит обновление. Такой способ часто встречается в очень нагруженных сайтах , а именно в голосовании. Пример таблицы в которой часть данных часто используется а основная масса нет, я на своей практике не встречал. Меня еще заинтересовало каким образом определяется какие записи более востребованы. Я понимаю так. У каждой ячейки есть счетчик количества запросов к ней. И если он переходит границу то запись мигрирует из главной таблицы в более используемую. Я такого не встречал. Наведите пожалуйста примеры сайтов где используется такой способ? Еще разденление таблици на несколько неизбежно ведет к множеству проблем. Например поиск по сайту должен осуществятся сразу по нескольким таблицам (вместо одной) и это только вершина айсберга. Потому разбиение на 2 таблицы я вижу только в том случае если это правда оправданный ход. И перед действием стоит очень серьезно подумать. Это сообщение отредактировал(а) taral - 5.1.2009, 01:49 |
|||
|
||||
| krundetz |
|
||||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
финансовые данные, работа с данными отчетного периода трейдерские данные, опят же периодичность работы с данными новости Востребованность данных определяется временным периодом, и по нему же определяется где должны находиться эти данные либо в основной таблице либо в архивной.
ну если у него один из самых дешевых тарифных планов и сервер держит не одну тысячу сайтов то вполне возможно. В последнее время дешевле вложить деньги в железо чем оптимизировать код, возможно ему стоит подумать в эту сторону. |
||||
|
|||||
| theworldcreator |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Чат?.. Архивные данные для восстановления справедливости в конфликтных ситуациях. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |