powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
21 сообщений из 21, страница 1 из 1
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33408302
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня всем!
MySQL 5.0.15 PHP 5.0.5 Apache 2.0.55
У меня такая проблема ...
Пишу запрос на выборку:
SELECT fullinfo.Fam, fullinfo.Nam, fullinfo.Fnam, fullinfo.Phone0, fullinfo.Phone1, fullinfo.Phone2, dolzh.Pos, depar.Depart, sub1.Subdiv1, sub2.Subdiv2, sub3.Subdiv3, fullinfo.Subdiv4, fullinfo.Vert, fullinfo.Phone_h FROM fullinfo, dolzh, depar, sub1, sub2, sub3 WHERE (fullinfo.Fullind = $ind and dolzh.Index = fullinfo.Dolzh and depar.Index = fullinfo.Depart and sub1.Index = fullinfo.Subdiv1 and sub2.Index = fullinfo.Subdiv2 and sub3.Index = fullinfo.Subdiv3)

*** $ind - какое-то значение индексного поля основной таблицы.

Поясню немножко что я собствено хотел, просто может я вобще изначально неправильно запрос придумал ...
Вобщем есть неколько таблиц и есть одна основная в которой хранятся индексы из других. Так вот этим запросом я хотел чтобы MySQL вытаскивал информацию из основной и там где индкесы из других вместо индексов подставлял соответсвующие им значения.
В MySQL 4.0.1 этот запрос вобщем-то работает нормально, т.е. я получаю тот результат который хотел, а как только перешел на MySQL 5.0.15, то он вобще зависает на этом запросе.
Не подскажите что делать? Точнее, это я неправильно написал или это в 5-м mysql такое уже не должно работать?

Спасибо за внимание...
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33408416
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй поудалять кусочки запроса, пока не найдёшь тот, который вешает сервер.
зы я бы посоветовал всё через inner join переписать.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33408827
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По кусочкам пробовал, получается пока выборка из одной таблицы, то все нормально, а как только доваляю выбирать еще из одной, то сразу виснет...
Сначала думал что из-за кодировок, т.к. до сих пор я не могу настроить чтобы у меня везде в переменных cp1251 стояла, получается, что перменная сессии utf-8, а переменная глобальная cp1251 ... Использую при подлючении SET NAMES=cp1251, хотя в 4-м этого не требовалось он нормально работал и без этого...
Нашел потом что у меня почему-то когда база в MySQL 4 то поле Int, а когда цепляю эту же базу на 5-й, то поле Double получается, почему такая фигня вышла я не понял, т.к. при создании таблиц я четко указывал что тип поля Int, точнее mediumint ... Ну я поменял все double на int, но он все равно гад зависает ...
Вот я и думаю теперь, то-ли базу надо переносить не так тупо как я (я просто папоку со своей базой скопировал из 4-й в 5-ю), то-ли действительно inner join использовать...
Попробую щас через inner join переписать запрос.....
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409349
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А EXPLAIN что говорит? Может, просто запрос очень тормозной выходит?
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409391
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто такой EXPLAIN? :)
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409397
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что выводит
EXPLAIN SELECT fullinfo.Fam, fullinfo.Nam ... ?
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409415
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по моему загвозка в том, что не до конца было выполнено обновление базы с версии 4.0 на 5.0 :) скажи спасибо, что он вообще читает данные нормально.

На самом деле папочку нужно было скопировать под 4.1, проверить, все ли нормально... оттуда получить дамп и влить в 5.0.

Т.к. серверу кроме преодоления обычных препятствий еще и старый формат таблиц подсунули....
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409485
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитал manual нашел кто такой EXPLAIN ...
На 4-м не ругается выдает таблицу ...
и на 5-м туже самую таблицу выдает!
но сам запрос выполнять не хочет!
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409559
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что касаемо :
Валентин КА по моему загвозка в том, что не до конца было выполнено обновление базы с версии 4.0 на 5.0 ...
Только что сделал экспорт базы под 4-м как sql-запрос и выполнил этот запрос в 5-м. Запрос прошел нормально база создалась уже получается со всеми нюансами 5-го MySQL. Проверил запрос -- таже фигня ... зависает, точнее в конце концов он мне реультат выдал через 2 минуты(на старой базе тоже самое было, просто я никогда этого момента не дожидался :)), в то время как на 4-м он тот же запрос за доли секунды делает ...
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409562
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так может вы ТАКИ покажете вывод EXPLAIN?
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409647
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DocAlТак может вы ТАКИ покажете вывод EXPLAIN?
Прошу прощения думал шо раз совпадают, то не надо показывать :)
Вот:

id | select_type |table| type|possible_keys|key |key_len|ref |rows| Extra
--+------------+-----+-----+------------+----+-------+----+----+-----
1  SIMPLE depar ALL NULL NULL NULL NULL 7
1 SIMPLE sub2 ALL NULL NULL NULL NULL 19
1 SIMPLE sub1 ALL NULL NULL NULL NULL 20
1 SIMPLE sub3 ALL NULL NULL NULL NULL 32
1 SIMPLE dolzh ALL NULL NULL NULL NULL 159
1 SIMPLE fullinfo ALL NULL NULL NULL NULL 483 Using where

Прошу прощения за вид таблицы, но ничего лучше придумать не смог...
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409651
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как по вашему, сканирование 3096455040 за 2 минуты -- это медленно?
Может быть, построить нормальные индексы?
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409652
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3096455040 записей, имелось виду.
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409686
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DocAl, ОГРОМНОЕ СПАСИБО!
Теперь буду на это обращать особое внимание...
Я в 4-м-то индексы определил, а в 5-м чего-то протупил этот момент...
думал, что т.к. поля чиловые целые, то он и так не должен слишком долго в них искать ....
Шо сказать -- молодой, зеленый ...
Учиться, учиться и учиться ....
Еще раз спасибо!

maXmoзы я бы посоветовал всё через inner join переписать
Переписал, результат был тот же, пока индексы не определил, как только определил то оба варианта стали работать быстро.
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409695
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь EXPLAIN выглядит прибилизительно так:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE fullinfo ALL NULL NULL NULL NULL 483 Using where
1 SIMPLE sub2 eq_ref PRIMARY PRIMARY 4 r_book.fullinfo.Subdiv2 1 Using where
1 SIMPLE sub1 eq_ref PRIMARY PRIMARY 4 r_book.fullinfo.Subdiv1 1 Using where
1 SIMPLE sub3 eq_ref PRIMARY PRIMARY 4 r_book.fullinfo.Subdiv3 1 Using where
1 SIMPLE dolzh eq_ref PRIMARY PRIMARY 4 r_book.fullinfo.Dolzh 1 Using where
1 SIMPLE depar eq_ref PRIMARY PRIMARY 4 r_book.fullinfo.Depart 1 Using where


DocAl, а объясни пожалуйста, мне бестоковому, если тебе не лень, как число 3096455040 получилось?
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409705
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коль про INNER JOIN сказал, то еще один вопрос:
А как лучше-то делать так:
Код: plaintext
1.
2.
SELECT fullinfo.Fam, fullinfo.Nam, fullinfo.Fnam, fullinfo.Phone0, fullinfo.Phone1, fullinfo.Phone2, dolzh.Pos, depar.Depart, sub1.Subdiv1, sub2.Subdiv2, sub3.Subdiv3, fullinfo.Subdiv4, fullinfo.Vert, fullinfo.Phone_h 
FROM fullinfo, dolzh, depar, sub1, sub2, sub3 
WHERE (fullinfo.Fullind = $ind and dolzh.Index = fullinfo.Dolzh and depar.Index = fullinfo.Depart and sub1.Index = fullinfo.Subdiv1 and sub2.Index = fullinfo.Subdiv2 and sub3.Index = fullinfo.Subdiv3)

или так:

Код: plaintext
1.
2.
SELECT fullinfo.Fam, fullinfo.Nam, fullinfo.Fnam, fullinfo.Phone0, fullinfo.Phone1, fullinfo.Phone2, dolzh.Pos, depar.Depart, sub1.Subdiv1, sub2.Subdiv2, sub3.Subdiv3, fullinfo.Subdiv4, fullinfo.Vert, fullinfo.Phone_h 
FROM fullinfo INNER JOIN dolzh ON  fullinfo.Dolzh = dolzh.Index INNER JOIN depar ON fullinfo.Depart = depar.Index INNER JOIN sub1 ON fullinfo.Subdiv1 = sub1.Index INNER JOIN sub2 ON fullinfo.Subdiv2 = sub2.Index INNER JOIN sub3 ON fullinfo.Subdiv3 = sub3.Index
WHERE fullinfo.Fullind = $ind
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33409739
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При использовании джойнов индексы очень важны, ведь без них для каждой записи каждой таблицы полностью сканируются все остальные, участвующие в запросе.
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33410772
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я где-то читал, что иннер жоин работает лучше запятой. Видать, проглючило. Скажем, вот тут сказано, что если where выглядит как P(T1,T2,T2) = C1(T1) AND C2(T2) AND C3(T3) то эти маленькие условия могут проверяться по ходу жоина, но эти условия записаны для одной таблицы. То есть для запроса
Код: plaintext
1.
2.
SELECT * FROM T1 INNER JOIN T2 ON P1(T1,T2)
                 INNER JOIN T3 ON P2(T1,T3)
  WHERE P(T1,T2,T3)
алгоритм будет такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
FOR each row t1 in T1 {
  FOR each row t2 in T2 such that P1(t1,t2) {
    FOR each row t3 in T3 such that P2(t1,t3) {
      IF P(t1,t2,t3) {
         t:=t1||t2||t3; OUTPUT t;
      }
    }
  }
}
если у тебя запрос
Код: plaintext
SELECT * FROM T1, T2, T3 WHERE P(T1,T2,T3)
и P(T1,T2,T3)=C(T1) AND C(T1,T2) AND C(T1,T3), то если оптимизатор мускля умён и будет работать по алгоритму
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
FOR each row t1 in T1 such that С(t1) {
  FOR each row t2 in T2 such that С(t1,t2) {
    FOR each row t3 in T3 such that С(t1,t3) {
      IF P(t1,t2,t3) {
         t:=t1||t2||t3; OUTPUT t;
      }
    }
  }
}
то всё пучком. Но может ли он вытаскивать двухтабличные условия во внешние циклы - неизвестно. Вот такой алгоритм будет плох:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
FOR each row t1 in T1 such that С(t1) {
  FOR each row t2 in T2 {
    FOR each row t3 in T3 {
      IF P(t1,t2,t3) {
         t:=t1||t2||t3; OUTPUT t;
      }
    }
  }
}
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33410844
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эээ... раз иксплейн выдал одну строку, значит, умеет :)
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33411556
RadioM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал, потестировал немножко (в PHPMyAdmin) у меня получилось, что запрос с "," выполнялся бысрее, чем с "INNER JOIN" ...
Хотя есть подозрения, что это еще от того что код длинее запроса получается и сам PHP даёт задрежку ...
В самом mysql на этот запрос выдает время 0,00 в любом исполнении ...
...
Рейтинг: 0 / 0
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
    #33412264
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RadioMкак число 3096455040 получилось?декартово произведение табличек, делённое на два.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]