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
Форумы портала PHP.SU :: Версия для печати :: Очень медленный SELECT и UPDATE
Форумы портала PHP.SU » » Работа с СУБД » Очень медленный SELECT и UPDATE

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

1. freelsd - 18 Октября, 2015 - 10:18:04 - перейти к сообщению
У меня есть база на несколько миллионов записей. Мне нужно в цикле сделать select а затем update. Но замерив с помощью microtime() запрос SELECT count(filed), я увидел что он занимает 1.5-2 секунды, что очень долго. Update, кстати тоже тормознутый. База на движке myisam, хотя innodb я тоже пробовал - те же грабли. Почему так медленно выполняются запросы и как мне улучшить ситуацию, потому что мне необходимо в цикле пройти все записи? Заранее спасибо.
2. andrewkard - 18 Октября, 2015 - 13:19:20 - перейти к сообщению
freelsd
Профилируйте:
http://www[dot]mysql[dot]ru/docs/man/EXPLAIN[dot]html
Возможно нужно поставить индексы к полям, по которым делаете SELECT. А возможно и вообще сменить форму работы с БД, без циклов.
3. freelsd - 18 Октября, 2015 - 15:05:51 - перейти к сообщению
andrewkard пишет:
freelsd
Профилируйте:
http://www[dot]mysql[dot]ru/docs/man/EXPLAIN[dot]html
Возможно нужно поставить индексы к полям, по которым делаете SELECT. А возможно и вообще сменить форму работы с БД, без циклов.

Да, индекс добавил, стало чуть шустрее, но без циклов не получится. Разве что можно все запросы сбросить в текстовый файл а потом разом все выполнить?
4. OrmaJever - 18 Октября, 2015 - 15:40:52 - перейти к сообщению
freelsd пишет:
но без циклов не получится

а я думаю получается... Просто вы не в ту сторону думаете
5. freelsd - 18 Октября, 2015 - 17:02:22 - перейти к сообщению
OrmaJever пишет:
freelsd пишет:
но без циклов не получится

а я думаю получается... Просто вы не в ту сторону думаете

Поясните, пожалуйста.

 

Powered by ExBB FM 1.0 RC1