RelaxДом

Быстрый поиск

Расширенный поиск

Авторизация

Запомнить? | Забыл пароль?
 
Register
Welcome
 
Программирование С++, С#, учимся программировать, и делимся опытом

Ответ
Непрочитано 01.06.2009, 08:44   #1
BIT Мужской

Аватар для BIT
 
Администратор
Регистрация: 26.11.2007
Сообщений: 998
pm
По умолчанию Senior MySQL Index :)

Есть умельцы, работающие с SQL, умеющие не просто делать запросы вида SELECT,DELETE...
А способные разобраться в запросах вида:
Код:
SELECT forum.forumid as forumid, thread.threadid as threadid, post.parentid as postid
FROM _wwwpost AS post
INNER JOIN _wwwthread AS thread ON ( thread.threadid = post.threadid )
LEFT JOIN _wwwthreadread AS threadread ON ( threadread.threadid = thread.threadid
AND threadread.userid = 12911)
INNER JOIN _wwwforum AS forum ON ( forum.forumid = thread.forumid )
LEFT JOIN _wwwforumread AS forumread ON ( forumread.forumid = forum.forumid
AND forumread.userid = 12911)
WHERE thread.lastpost > IF(threadread.readtime IS NULL , UNIX_TIMESTAMP() - (10*86400 ) , threadread.readtime)
AND thread.lastpost > IF(forumread.readtime IS NULL , UNIX_TIMESTAMP() - (10*86400 ) , forumread.readtime)
AND thread.visible IN (0,1,2)
AND thread.sticky IN (0,1)
AND post.dateline > IF(threadread.readtime IS NULL , UNIX_TIMESTAMP() - (10*86400 ) , threadread.readtime)
AND post.dateline > IF(forumread.readtime IS NULL , UNIX_TIMESTAMP() - (10*86400 ) , forumread.readtime);
найти слабые места запроса(которые не используют индексы так, как хотелось бы)
Если есть желание попробовать свои знания на загруженном сервере(>13 000 000 запросов в день), буду рад познакомиться с таким человеком.
__________________

В памяти моей ты останешься молодой и любимой...
BIT вне форума   Ответить с цитированием
Непрочитано 01.06.2009, 19:20   #2
BIT Мужской

Аватар для BIT
 
Администратор
Регистрация: 26.11.2007
Сообщений: 998
pm
По умолчанию Re: Senior MySQL Index :)

опять тишина )))
__________________

В памяти моей ты останешься молодой и любимой...
BIT вне форума   Ответить с цитированием
Непрочитано 01.06.2009, 19:54   #3
Seefon Мужской

Аватар для Seefon
 
IT
Регистрация: 03.12.2007
Адрес: Reynholm Industries
Сообщений: 633
pm
По умолчанию Re: Senior MySQL Index :)

Ты Лучше бы на Ксист отписал. Тут некоторые Венду поставить не могут, а ты уж про MySQL...
__________________
http://forum.relaxdom.net/signaturepics/sigpic10272_24.gif
Seefon вне форума   Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Seefon за это полезное сообщение:
Непрочитано 02.06.2009, 01:54   #4
BIT Мужской

Аватар для BIT
 
Администратор
Регистрация: 26.11.2007
Сообщений: 998
pm
По умолчанию Re: Senior MySQL Index :)

Буду верить в лучшее... да и сам доизучу индексы тогда...
__________________

В памяти моей ты останешься молодой и любимой...
BIT вне форума   Ответить с цитированием
Непрочитано 03.06.2009, 03:07   #5
tramway Мужской

Аватар для tramway
 
В гостях
Регистрация: 21.05.2009
Сообщений: 30
pm
По умолчанию Re: Senior MySQL Index :)

так а где индексы-то?

Я MySQL не знаю, но возможно есть опция посмотреть не результат запроса, а так называемый PLAN, там написан весь порядок - что перебираем, с чем джойним по какому индексу, как отбираем... перебор без индекса напишет типа raw что-нибудь. Индексы бывают разные, в оптимизированной базе одно поле может быть в нескольких индексах, нужно выбирать по юникам/фильтрам/статистике.
13М запросов лучше вообще без SQL делать, а на прямых ссылках, тогда хоть триллион т.к. она вообще ничего не ищет т.к. ничего не теряет.

Нужно знать сами индексы, структуру базы, ее наполнение, статистику значений, повадки оптимизатора. В MySQ эти IF скорее всего оптимизатору не понятны и будут перебираться все записи, лучше

AND post.dateline > IF(threadread.readtime IS NULL , UNIX_TIMESTAMP() - (10*86400 ) , threadread.readtime)

расписать

AND (threadread.readtime IS NULL AND post.dateline > UNIX_TIMESTAMP() - (10*86400 )
OR post.dateline>threadread.readtime) - скобки расставь
тогда если null'ы проиндексированы и оптимизатор разбирает такие выражения, он всего два раза выполнит бинарный поиск, ну а что нужно перебирать его придется перебирать.

поищи слово PLAN в документации

Если база маленькая анализ запроса может выполняться дольше чем сам запрос. Тут куча нюансов, вообще DBA целая профессия, причем нужно знать конкретные сервер-базу-запросы, а не теории. И все равно иногда запросы летают, а добавили одну запись, дурной оптимизатор запросов подсуетился и запрос зависает на сутки.
tramway вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо tramway за это полезное сообщение:
 
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход