rustrek

Рейтинг
64
Регистрация
19.07.2010
С нагрузкой там всё нормально, если в базу сильно не лезли

Много чего переписал, просто нужно было под себя сделать..

А то вы так заехали, как-будто вы с 0 это всё написали. Особенно копирайтеры сразу вычистили. Ну какой молодец.

Наверное не так написал в описании.

наверное нужно было сказать, что дорабатываю...

Да, это изначально система комментариев commentit очень хорошая система, хотя пришлось немного доработать, поэтому и переживаю за нагрузку

asteroid:
Т.е. простой запрос тормозит?
Сколько по времени выполняется запрос ниже?

этот вот

Отображает строки 0 - 29 (36 всего, запрос занял 3.0439 сек.)

---------- Добавлено 03.08.2015 в 14:51 ----------

alexbalance:
вообще обычно чтобы объединить несколько таблиц используют LEFT JOIN
например ....

и вместо * в вашем запросе лучше перечислить наименования полей которые выбираете, это тоже возможно поможет

спасибо, запрос выдаёт ошибку #1054 - Unknown column 'N.NAME' in 'field list'

asteroid:
Похоже, что тормозит offset в лимите.
Вот такой вариант пробовали?

думаю вы не совсем правы, потому как запрос с LIMIT 36 ; также срабатывает 3-4 секунды

livetv:
Было 2.9451, стало 0.0227 сек
Вам еще мало? :)

И, наверно, слишком много индексов у Вас навешено.

удалось ускорить выполнение запроса Отображает строки 0 - 29 (35 всего, запрос занял 0.0018 сек.)

немножко танцы с бубном правда, ну если работает и обрабатывает на 3 секунды быстрее то значит наверное нормально

    $type = 1; 

$d = date('Y-'.$mon.'-d');
$begin = strtotime(($type >= 0 ? '+'.$type : $type).' months', strtotime($d));
$current_month = date('m', $begin);

$date_cond = "AND N.date between '".$year."-".substr('0'.$mon,-2)."-01 00:00:00' AND '".$year."-".$current_month."-01 00:00:00'";
dlyanachalas:
Внимательно сейчас посмотрел вашу таблицу:



Вы понимаете, что это не три ключа к каждому из этих полей, а один общий, достаточно бесполезный ключ?

Удаляйте, делайте ключ к каждому из полей, затем берите первый вариант Comodo.
Если будет всё ещё медленно - тогда уже мудрите в сторону временных таблиц.

ок сейчас попробую, очень долго обрабатывает при добавлении нового индекса, дофига записей, работать становится сложнее

пацаны не ссорьтесь, лучше подскажите мне правильное решение, а то моё решение с between не совсем меня устраивает

Comodo:
Вложенные селекты очень и очень медленное решение. Не уверен, но может быть пошустрее

NAME во вложенных селектах это параметр?

EXPLAIN своего и предложенного мною запроса. Вполне возможно, что где то тут news_sources where id = N.id_source отсутствуют индексы. Так же желательно содержать индекс на дату. Он у Вас есть?

спасибо за совет

да NAME это параметр

индексы вроде бы везде где надо есть, лучше ниже приведу всю таблицу

CREATE TABLE IF NOT EXISTS `news_news` (

`id` INT(11) NOT NULL AUTO_INCREMENT,
`tid` INT(11) NOT NULL DEFAULT '0',
`id_category` INT(11) NOT NULL DEFAULT '0',
`id_source` INT(11) NOT NULL DEFAULT '1',
`id_region` INT(11) NOT NULL DEFAULT '1',
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`title` VARCHAR(255) NOT NULL DEFAULT '',
`text` longtext NOT NULL,
`link` VARCHAR(255) NOT NULL DEFAULT '',
`image` VARCHAR(255) NOT NULL,
`counter` INT(11) NOT NULL DEFAULT '0',
`comment` INT(11) NOT NULL DEFAULT '0',
`seo_title` VARCHAR(255) NOT NULL,
`user_id` INT(11) NOT NULL,
`poll` INT(11) NOT NULL DEFAULT '0',
`hits` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `id_region_id_category_id_source` (`id_region`,`id_category`,`id_source`),
KEY `id_category` (`id_category`),
KEY `image` (`image`),
KEY `category_image` (`id_category`,`image`),
KEY `id_region` (`id_region`),
KEY `date` (`date`),
KEY `id_source` (`id_source`),
KEY `counter` (`counter`),
KEY `region_category` (`id_category`,`id_region`),
KEY `category_date_source` (`id_category`,`date`,`id_source`),
KEY `link` (`link`),
KEY `region_category_source_date` (`id_region`,`id_category`,`id_source`,`date`),
KEY `regi2` (`id_region`,`id_category`,`date`),
KEY `source_region` (`id_source`,`id_region`),
KEY `user_id` (`user_id`),
KEY `hits` (`hits`),
KEY `counter_cat` (`id_category`,`counter`),
FULLTEXT KEY `FULLTEXT` (`text`,`title`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4824896 ;

кстати ваш запрос сильно не помог, вот время его выполнения

Отображает строки 0 - 29 (36 всего, запрос занял 3.0853 сек.)

umercomp:
Две секунды - не так уж чтобы очень уж и долго. Может, браузер долго обрабатывает какие-то незакрытые теги?

нет, это именно медленный запрос, я выше дал результат выполнения )

---------- Добавлено 10.05.2015 в 11:50 ----------

dlyanachalas:
Какой-то странный у вас запрос.

Здесь:



у вас возникает алгебраическое перемножение множеств. Что съедает очень много памяти и других ресурсов.

Лечение: переписать, заменив запятые на конструкцию UNION.

удалось ускорить немножко таким методом

N.date between '2014-01-01 00:00:00' and '2014-02-01 00:00:00'

Отображает строки 0 - 29 (36 всего, запрос занял 0.0227 сек.)

но думаю, что можно ещё ускорить

totamon:
wildcard у вас и так включен скорей всего, раз поддомены блогов работают, вернее wildcard это и есть "автоподдомены"...
вам нужно добавить исключение в реврайт для реальных поддоменов, как для www в вашем примере

так же все поддомены реальные прописываете...

Добавил реальный поддомен в исключение


RewriteCond %{HTTP_HOST} !^www\.d\.sait\.ru$
RewriteCond %{HTTP_HOST} (www\.)?\.d\.sait\.ru$
RewriteRule ^(.*)$ http://d.sait.ru/$1

Перехожу по ссылке http://d.sait.ru/

Пишет - Not Found The requested URL /index.php was not found on this server.

Реальный домен существует, index.php там тоже есть, не правильно сделал исключение, что ли?

Всего: 44