В справке гугле вообще полуерунда. :)
Установите nginx из репозитория nginx и не выдумывайте...
EXPLAIN-ы как бы одинаковые.
Только я хз, почему
в первой таблице "const 1 Using temporary"
То есть выбирается по индексу 1 строка, но используются временные таблицы :)
Можно запрос переписать так:
SELECT P.ID FROM wp_posts P JOIN wp_term_relationships R ON (R.object_id = P.ID) JOIN wp_term_taxonomy T ON (T.term_taxonomy_id = R.term_taxonomy_id AND T.term_id = 685) WHERE 1 AND P.post_status = 'publish' AND P.post_type = 'post' AND P.post_date < NOW() GROUP BY P.ID
Mysql c какой-то версии имеет тип поля JSON.
То есть можно фильтровать более менее нативно.
Но вот индексов по нему не построить :)
Может все же JOIN-нить несколько таблиц?
Это самописный запрос или CMS его сама генерирует?
SELECT DISTINCT P.ID FROM wp_posts P JOIN wp_term_relationships R ON (R.object_id = P.ID) JOIN wp_term_taxonomy T ON (T.term_taxonomy_id = R.term_taxonomy_id AND T.term_id = 685) WHERE 1 AND P.post_status = 'publish' AND P.post_type = 'post' AND P.post_date < NOW()
Какой EXPLAIN у Вашего и моего запроса?
1. Запрос не полный
2. SHOW PROCESSLIST в Mysql вряд ли адекватный :)
3. Вы отключили временные таблицы в памяти, они будут создаваться сразу на диске.
4. EXPLAIN в студию
Так запросы не пишут!
Тут может быть полное объединение таблиц :)
Нужно использовать JOIN:
FROM wp_posts P JOIN wp_term_relationships R ON (R.some_field = P.some_field) JOIN wp_term_taxonomy T ON (T.some_field = R.some_field)
Если помогло, то ок. :)
У самого часто висят запросы с такой информацией в SHOW PROCESSLIST.
Дивно, что отключение временные таблиц в памяти решило проблему. :)
Блокировка сессий в php скорее всего...
Изучайте:
X-Accel-Redirect
session_write_close()
+1.
Только рынок труда диктует другое. :)
Все вакансии требуют знания фреймворков и паттернов. :)
Хотя, когда приходишь на проект, - говнокод говнокодом.
Рынок труда захватили модники. :)
Сам проходил через ООП головного мозга в начале карьеры.
Везде говорилось, что кто не пишет на ООП, тот лох. :)
А вдруг это не одиночка, а другой шаблон?
Декоратор, допустим.
Одиночка используется, если необходимо обеспечить наличие одного экземпляра или ленивую инициализацию.
Может также использоваться пул одиночек.---------- Добавлено 05.02.2017 в 12:40 ----------
Как и с любым статическим методом :)
Как эту проблему решают фреймворки? :) У них тоже статики дофига.
Можно передавать параметром. :)
Ну и это отновится к любой статике. :)
А зачем его уничтожать? :)
Если это соединение с БД, то можно просто его закрыть. :)
Хм, одиночку можно реализовать и без статического метода.
Но это будет не совсем одиночка.
Хранить одиночку в поле приложения.
Но необходима гарантия, что существует только один экземпляр приложения.
Хотя, зачем. Если будет другой экземпляр, то ему лучше дать своего одиночку. :)
А как контролировать количество соединений с mysql и memcached? :)---------- Добавлено 05.02.2017 в 12:46 ----------
Одиночка тут ни при чем.
Это называется цепочка вызовов.
Реализуется через return $this.
Хм, а это как-то ускоряет индексацию? :)
Вернее, способствует появлению страниц в выдаче в тот же день?