Перейти к контенту

Чт за бред в структуре таблицы ibf_voters?


Рекомендуемые сообщения

Поле member_id типа varchar(32), а не int! :D Какого?

 

Там только один индекс! (первичный)

 

А запросы делаются вот так:

SELECT member_id from ibf_voters WHERE member_id=2461 and tid=990

 

Т.е. надо еще проиндексировать member_id и tid (лучше групированый индекс)

В версии 1.3 тоже самое

А возможно и в 2.0.0!

Изменил тип member_id и добавил такой индекс:

ALTER TABLE ibf_voters ADD INDEX member_id( member_id, tid )

 

И вышеуказанный запрос стал быстрее в 7 раз! :)

 

Можно писать в "Косяки форума"? :)[1115372984:1115374668]Проверил - такое даже в 2.0.3. (точно такая же структура, с текствым типом для member_id ;))

Ссылка на комментарий
Поделиться на других сайтах

Да уж... < <

 

насчёт смены поля - это безусловно. А вот насчёт индекса - наоборот, не member_id, tid, а tid, member_id. Т.е. вот так:

ALTER TABLE ibf_voters MODIFY member_id mediumint(8) unsigned NOT NULL default 0, ADD INDEX (tid, member_id)

Ссылка на комментарий
Поделиться на других сайтах

Еще совсем не проиндексирована таблица ibf_polls (надо проиндекстировать по полю id'а тем).

 

Не используемое текстовое поле rating и total_votes в ibf_topics, misc (строкового типа) в ibf_members, в ibf_categories поле state строкового типа (а хотя оно принимает значения 0, 1 и 2)...

 

Еще в ibf_topics поле state строковое и принимает значения 'open', 'closed', 'link'. Может enum тип нужен?

Похожая ситуация в поле poll_state.

Ссылка на комментарий
Поделиться на других сайтах

Hostem, спасибо

 

ALTER TABLE ibf_polls ADD UNIQUE KEY (tid)

 

ALTER TABLE ibf_topics DROP COLUMN rating, DROP COLUMN total_votes

Вот с полем типа TEXT они просчитались ;) Это же не VARCHAR

Висит в таблице и не используется :)

 

ALTER TABLE ibf_members DROP COLUMN misc

Правда, у себя я его не нашёл, видимо давно грохнул.

 

Еще в ibf_topics поле state строковое и принимает значения 'open', 'closed', 'link'. Может enum тип нужен?

Мне кажется, это на будущее. Вдруг, ты будешь вводить другие обозначения топиков?

Вообще, в ibf_members мне помнится, я удалял немало неиспользованных полей.

 

Ещё есть одно бесполезное поле в ibf_posts:

ALTER TABLE ibf_posts DROP COLUMN post_title

С варчарами-то, оказалось, беда :D

Ещё некоторые запросы:

ALTER TABLE ibf_admin_sessions MODIFY MEMBER_ID mediumint(8) unsigned NOT NULL default 0
ALTER TABLE ibf_categories MODIFY state TINYINT(1) unsigned NOT NULL default 0
ALTER TABLE ibf_forum_tracker MODIFY member_id mediumint(8) unsigned NOT NULL default 0
ALTER TABLE ibf_forums MODIFY status TINYINT(1) unsigned NOT NULL default 0
ALTER TABLE ibf_members MODIFY hide_email TINYINT(1) unsigned NOT NULL default 0

 

Запросы по индексам:

-- лишний индекс:
ALTER TABLE ibf_forums DROP INDEX (id);

-- если смайлов много, может помочь:
ALTER TABLE ibf_emoticons ADD INDEX (clickable);

 

Не говоря уж о том, что в ibf_posts почти все поля NULL, хотя должны быть NOT NULL default 0.

Но это я уже давно исправил, не помню запросы.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

В ibf_members поле time_offset типа varchar(10). Тут подойдет tinyint.

И поле interests типа text, может лучше varchar'ом обойтись :D?

Ссылка на комментарий
Поделиться на других сайтах

1) не подойдет.

По-моему time_offset с + записывается.

2) А если у тебя интересов больше чем на 255? :D

Ссылка на комментарий
Поделиться на других сайтах

просто много + условие что есть соответствие что кликабельных 50 % от некликабельных.
Ссылка на комментарий
Поделиться на других сайтах

ну 125 значит )

Вообщем идея состоит в том, что прок от индекса есть тогда когда мускулу легче взять инфу из него чем проходить всю базу.

Если в индексе - 75% из всего объёма таблицы, то ему легче всю таблицу просканировать чем дополнительно обращаться к индексу :D

Ссылка на комментарий
Поделиться на других сайтах

А 250 str_replace'ов при обработке поста - это ничего страшного? Помоему тут уже не нагрузку на БД надо оптимизировать, а кол-во str_replace (). :D
Ссылка на комментарий
Поделиться на других сайтах

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.