Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: При запросе к базе данных всё тормазит

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Волк
Отправлено: 22 Февраля, 2011 - 14:33:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




Добрый день. У меня такой вопрос. Если например есть таблица в базе данных (пользователи) в которой больше чем пол ляма записей (тоесть больше чем пол миллиона зарегестрированых пользователей). И есть админка, в которой каждого пользователя можно редактировать. Чтобы вывести ссыкли на пользователей в админке делаются такие запросы SELECT * FROM users WHERE <условия фильтра (например нужный ник юзера)> LIMIT 0, 15; При этом когда мы делаем такой запрос у всех пользователей всё начинает тормазить. Есть ли какие соображения почему всё так, и как можно это исправить?


-----
Таран - оружие героев!
 
 Top
grefon
Отправлено: 22 Февраля, 2011 - 15:10:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




1) Если Вы указываете ник юзера (а он теоретически должен быть уникальным), то лимит ставить не нужно.
2) Запрос SELECT сам по себе работает очень быстро с условием WHERE даже в таблицах с миллионом записей.
3) Проставьте индексы в таблице по всем главным полям, которые участвуют в условиях выборки. Например на поля id, login, status. Индексы должны быть обязательны для таких таблиц.
4) Для крупных проектов нужно и ресурсов побольше. Чем пользуетесь Вы?


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
zardoz
Отправлено: 22 Февраля, 2011 - 22:51:38
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Думаю дело в индексах, точнее в их отсутствии.
Вот спробовал - 122 тыс записей, нужные индексы, select * from thistable where = ... возвращает 18 записей (но то не суть), время выборки 0,090 сек.
MySQL-5.0.1, MyISAM, CPU: Turion-x2 1900 MHz

С уважением.
P.S. Да, кстати, <условие фильтра> тоже важно для работы индексов.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB