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

Форум MySQL

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

 

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

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

тема: При выполнении скрипта большая нагрузка на сервер

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

 
 автор: Граон   (28.03.2007 в 15:15)   письмо автору
 
   для: dima_s_d_s   (26.03.2007 в 01:39)
 

>В таблице хранится текстовая информация, и данные все нужны.
>И таблица проиндексирована по полю news_id

Ну значит индек не удачный!
Вы вот что план выполнения запроса гляньте.
Если не знакомы с этим то определите селективно ли ваше условие, то есть сколько у вас строк с условием вашим enabled = 'значение' если много то индекс уберите в этом случае полное сканирвание лучше

   
 
 автор: dima_s_d_s   (27.03.2007 в 18:40)   письмо автору
 
   для: cheops   (27.03.2007 в 13:27)
 

Вот структура таблици:

TABLE `news` (
`news_id` int(11) unsigned NOT NULL auto_increment,
`news_title` varchar(255) NOT NULL default '',
`news_keywords` varchar(255) NOT NULL default '',
`news_description` varchar(255) NOT NULL default '',
`news_date` datetime NOT NULL default '0000-00-00 00:00:00',
`news_start_text` text,
`news_end_text` text,
`news_comments_counter` int(11) unsigned NOT NULL default '0',
`news_hit_counter` int(11) unsigned NOT NULL default '0',
`news_topic_id` int(11) unsigned NOT NULL default '1',
`news_author` varchar(255) NOT NULL default '',
`news_enabled` tinyint(1) unsigned NOT NULL default '1',
`news_show_in_home` tinyint(1) unsigned NOT NULL default '1',
`news_allow_comments` tinyint(1) unsigned NOT NULL default '1',
`news_with_poll` tinyint(1) unsigned NOT NULL default '0',
`news_poll_id` int(11) unsigned NOT NULL default '0',
`news_auto_br` tinyint(1) unsigned NOT NULL default '1',
`news_rate_value` int(10) unsigned NOT NULL default '0',
`news_rate_count` int(10) unsigned NOT NULL default '0',
`id_alf` text NOT NULL,
PRIMARY KEY (`news_id`),
KEY `news_enabled` (`news_enabled`),
KEY `news_topic_id` (`news_topic_id`),
KEY `news_show_in_home` (`news_show_in_home`),
KEY `news_author` (`news_author`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=cp1251;

Можно её оптимизировать?

(второстипенный вопрос: как правильно орагнизовать поиск в такой большой базе? )

   
 
 автор: cheops   (27.03.2007 в 13:27)   письмо автору
 
   для: dima_s_d_s   (27.03.2007 в 12:18)
 

У вас news_enabled какие значения может принимать?

   
 
 автор: dima_s_d_s   (27.03.2007 в 12:18)   письмо автору
 
   для: Trianon   (27.03.2007 в 09:22)
 

Может можно в таблице создать дополнительно поле (например индекс), как можно исправить данное положение?

   
 
 автор: Trianon   (27.03.2007 в 09:22)   письмо автору
 
   для: dima_s_d_s   (27.03.2007 в 01:58)
 

Странно... У меня Ваш результат промоделировать не получается. У меня там index значится.
Надо смотреть структуру таблицы и полный ответ explain.

Хотя, в принципе, удивляться нечему. Просто катиться по индексу поля порядка не получается, поскольку нужно доп.поле в записи проверять. Ограничения на id нету. Хочешь не хочешь, а придется все записи просматривать.

В целом ведикт остается прежним. Оптимум запроса вытягивать глупо - нужно менять схему БД.

   
 
 автор: dima_s_d_s   (27.03.2007 в 01:58)   письмо автору
 
   для: Trianon   (27.03.2007 в 00:37)
 

В колонке type -> ref

и что это значит?

   
 
 автор: Trianon   (27.03.2007 в 00:37)   письмо автору
 
   для: dima_s_d_s   (26.03.2007 в 22:51)
 

Попробуйте выполнить

explain select news_id, news_title, news_date,  news_start_text 
from news 
where news_enabled='1' 
order by news_id DESC 
limit 0,7

в клиенте (phpMyAdmin например) и поглядите что получится.

Это запрос отчета эффективности указаного запроса.
Интересно, что будет в колонке Type

   
 
 автор: dima_s_d_s   (26.03.2007 в 22:51)   письмо автору
 
   для: Trianon   (26.03.2007 в 20:04)
 

>Что показывает EXPLAIN SELECT .... ?
непонял что за EXPLAIN?

   
 
 автор: Trianon   (26.03.2007 в 20:04)   письмо автору
 
   для: dima_s_d_s   (26.03.2007 в 19:56)
 

Что показывает EXPLAIN SELECT .... ?

   
 
 автор: dima_s_d_s   (26.03.2007 в 19:56)   письмо автору
 
   для: Trianon   (26.03.2007 в 12:12)
 

Выходит что данный запрос оптимальный. и улучшить его нельзя

   

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

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

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