Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Большой объем MySQl

Сообщения:  [1-10]   [11-15] 

 
 автор: cheops   (05.07.2011 в 16:26)   письмо автору
 
   для: dirol   (05.07.2011 в 15:12)
 

Да вы сами проверьте, ускоряются у вас эти запросы или нет?

  Ответить  
 
 автор: dirol   (05.07.2011 в 15:12)   письмо автору
 
   для: cheops   (05.07.2011 в 14:48)
 

PRIMARY KEY (`id`),
KEY `cid` (`cid `, `sortirofka`,`fix`,`anons`,`perewod`,`fixup`,`fixcenter`)

а так правильнее?

  Ответить  
 
 автор: cheops   (05.07.2011 в 14:48)   письмо автору
 
   для: dirol   (05.07.2011 в 13:34)
 

Скорее всего он быстрый, просто ресурсы MySQL оттянуты на действительно медленные запросы, они работают, потребляют процессорное время и память - это приводит к замедлению всех остальных запросов. Если бы их не было, скорее всего скорость однотабличных запросов возрасла.

В любом случае для ускорения этого запроса нужны другие индексы - многотабличные, у вас индекс используется только для cid IN (8,171) - все остальные сравнения не участвуют в индексах, а просто перелопачивают всю таблицу. Кроме этого time лучше перевести в UNIXSTAMP - занимать он будет в несколько раз меньше времени, а сравнение будет протекать в несколько раз быстрее.

  Ответить  
 
 автор: dirol   (05.07.2011 в 13:34)   письмо автору
 
   для: cheops   (05.07.2011 в 13:27)
 

он тоже не быстрый


0.5542 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (1,10,11,12) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.10686 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (1,10,11,12) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]

0.12245 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (2,13,14,15,16) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.11618 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (2,13,14,15,16) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]

0.02667 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (6,91,101) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.02664 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (6,91,101) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]

0.02086 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (3,111) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.02062 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (3,111) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]

0.01316 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (5,181,191) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.01539 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (5,181,191) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]

0.01903 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (4,161) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.01773 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (4,161) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]

0.02358 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (7,201,141,151,17) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.02407 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (7,201,141,151,17) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]

0.01037 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (8,171) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 3, 5)]

0.01005 сек. - [(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images FROM cms_news WHERE cid IN (8,171) AND status!='0' AND time <= NOW() ORDER BY time DESC LIMIT 0, 3)]


  Ответить  
 
 автор: cheops   (05.07.2011 в 13:27)   письмо автору
 
   для: dirol   (05.07.2011 в 13:01)
 

Погодите, это же однотабличный запрос, разве он медленно выполняется? Насколько я понял из отчета, проблема именно с многотабличными запросами?

  Ответить  
 
 автор: dirol   (05.07.2011 в 13:01)   письмо автору
 
   для: cheops   (05.07.2011 в 12:43)
 

и звените а примером не покажите ? в запросе ON надо поставить?

щас запрос выполняется так

  $result = $db->sql_query("(SELECT id, cid, title, UNIX_TIMESTAMP(time) as formatted, hometext, bodytext, acomm, status, code, images  FROM ".$prefix."_news WHERE cid IN (".$id.") AND
 status!='0' AND time <= NOW() ORDER BY time DESC LIMIT $ord, $lim)");
    

  Ответить  
 
 автор: cheops   (05.07.2011 в 12:43)   письмо автору
 
   для: dirol   (05.07.2011 в 12:27)
 

Попробуйте это условие передвинуть в ON, чтобы объединенные таблицы были поменьше. Дело в том, что WHERE применяется к записям когда уже сформирована промежуточная таблица.

  Ответить  
 
 автор: dirol   (05.07.2011 в 12:27)   письмо автору
 
   для: cheops   (05.07.2011 в 12:23)
 

cid это категории новостей. вот выводятся новости из категорий 1,10,11,12 всего записей в категориях 62

  Ответить  
 
 автор: cheops   (05.07.2011 в 12:23)   письмо автору
 
   для: dirol   (05.07.2011 в 12:14)
 

>cid IN (1, 10,11,12)
cid - это что такое и как много записей условие отбирает, и как много записей оно отбрасывает?

  Ответить  
 
 автор: cheops   (05.07.2011 в 12:22)   письмо автору
 
   для: dirol   (05.07.2011 в 12:14)
 

А cms_counter? Вообще таблицы уже довольно большие. Вам все новости в них нужны, может стоит их разделить на несколько?

  Ответить  

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования