Поле (core_core_tags.tag_text) не имеет индекса... - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

Поле (core_core_tags.tag_text) не имеет индекса...

#1 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 11 Июнь 2015 - 14:22

Обнаружил, что по полю core_tags.tag_text нет индекса. Почему ?
Как IP.Board без индекса фильтрует темы по тегам ? Перебором/сравнением всех тегов из (core_tags) ?

Сообщение изменено: cyrax_02 (11 Июнь 2015 - 14:31)

0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 060
  • IPB version:3.1.x
 

Отправлено 11 Июнь 2015 - 17:00

Там все намного сложнее, tag_text не единственное условие по которому выбираются теги.
0

#3 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 11 Июнь 2015 - 17:41

В собственном коде я выбираю темы по тегам. Запрос выполняется медленно из-за отсутствия сабжевого индекса.

Добавить индекс не проблема, но:
1) замедлятся запросы на создание новых тем
2) после каждого обновления движка придётся следить, чтобы этот самый индекс не был удалён

Сообщение изменено: cyrax_02 (11 Июнь 2015 - 17:42)

0

#4 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 11 Июнь 2015 - 17:44

siv1987, не могли бы вы удалить префикс таблицы из заголовка темы ?
0

#5 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 060
  • IPB version:3.1.x
 

Отправлено 11 Июнь 2015 - 23:41

Включите лог медленных запросов или в initdata.php включить дебаг sql запросов, на странице выбора тегов добавьте ?debug=1 и смотрите за какое время он выполняется. Мне кажется что добавления индекса может и не помочь, потому что там есть другие индексы.
0

#6 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 12 Июнь 2015 - 00:14

Цитата

потому что там есть другие индексы.

Вообще-то есть один индекс (составной) с участием поля (tag_id):
tag_aap_lookup + tag_text

Т.е. нужно задействовать этот самый (tag_aap_lookup). Похоже, это md5 от (tag_text). Завтра проверю...
Если действительно так, то в собственном запросе вместо искомых значений тегов нужно искать их md5-эквиваленты по полю (tag_aap_lookup)

Цитата

Мне кажется что добавления индекса может и не помочь

Должен. Поскольку (tag_text) в вышеуказанном индексе находится на второй позиции => при поиске по полю (tag_text) этот индекс не используется. Именно так и было в моём запросе (проверял EXPLAIN'ом - имел место перебор всех записей в таблице тегов)

Сообщение изменено: cyrax_02 (12 Июнь 2015 - 00:15)

0

#7 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 12 Июнь 2015 - 10:34

Нет. Это не md5. Это хрен знает что.
Нужно колдовать с полем (tag_perm_aai_lookup). По нему есть индекс и он, похоже, каким-то чудесным образом связан с полем (tag_text).

Пока оставим сабж до конца лета...
0

#8 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 813
  • IPB version:I have no IPB
 

Отправлено 12 Июнь 2015 - 11:00

Просмотреть сообщениеcyrax_02 сказал(а):

Т.е. нужно задействовать этот самый (tag_aap_lookup). Похоже, это md5 от (tag_text). Завтра проверю...

Просмотреть сообщениеcyrax_02 сказал(а):

Нет. Это не md5. Это хрен знает что.

Так, может, не стоит гадать, а взглянуть внутрь...
admin/sources/classes/tags/abstract.php
	/**
	 * Build a key
	 */
	private function _getKey( $where )


Также есть методы для работы с тегами (поиска, добавления, замены, удаления и др.)
0

#9 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 12 Июнь 2015 - 14:45

/**
         * Build a key
         */
        private function _getKey( $where )
        {
                $where = $this->_cleanWhere( $where );
                
                if ( isset( $where['meta_id'] ) )
                {
                        return md5( $this->getApp() . ';' . $this->getArea() . ';' . intval( $where['meta_id'] ) );
                }
                else if ( isset( $where['meta_parent_id'] ) )
                {
                        return md5( $this->getApp() . ':' . $this->getArea() . ':' . intval( $where['meta_parent_id'] ) );
                }
        }

0

#10 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 060
  • IPB version:3.1.x
 

Отправлено 12 Июнь 2015 - 15:47

Не все так просто там как казалось бы - выбор только по тегу и все. Условий там несколько, индексов несколько, а значит оптимизатор выберет один индекс для поиска.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна