|
|
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Доброго дня всем! 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 такое уже не должно работать? Спасибо за внимание... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 13:07:19 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
попробуй поудалять кусочки запроса, пока не найдёшь тот, который вешает сервер. зы я бы посоветовал всё через inner join переписать. ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 13:36:14 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
По кусочкам пробовал, получается пока выборка из одной таблицы, то все нормально, а как только доваляю выбирать еще из одной, то сразу виснет... Сначала думал что из-за кодировок, т.к. до сих пор я не могу настроить чтобы у меня везде в переменных cp1251 стояла, получается, что перменная сессии utf-8, а переменная глобальная cp1251 ... Использую при подлючении SET NAMES=cp1251, хотя в 4-м этого не требовалось он нормально работал и без этого... Нашел потом что у меня почему-то когда база в MySQL 4 то поле Int, а когда цепляю эту же базу на 5-й, то поле Double получается, почему такая фигня вышла я не понял, т.к. при создании таблиц я четко указывал что тип поля Int, точнее mediumint ... Ну я поменял все double на int, но он все равно гад зависает ... Вот я и думаю теперь, то-ли базу надо переносить не так тупо как я (я просто папоку со своей базой скопировал из 4-й в 5-ю), то-ли действительно inner join использовать... Попробую щас через inner join переписать запрос..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 15:29:04 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
А EXPLAIN что говорит? Может, просто запрос очень тормозной выходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 17:43:08 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Кто такой EXPLAIN? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 17:52:02 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Что выводит EXPLAIN SELECT fullinfo.Fam, fullinfo.Nam ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 17:53:11 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
А по моему загвозка в том, что не до конца было выполнено обновление базы с версии 4.0 на 5.0 :) скажи спасибо, что он вообще читает данные нормально. На самом деле папочку нужно было скопировать под 4.1, проверить, все ли нормально... оттуда получить дамп и влить в 5.0. Т.к. серверу кроме преодоления обычных препятствий еще и старый формат таблиц подсунули.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 17:57:12 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Почитал manual нашел кто такой EXPLAIN ... На 4-м не ругается выдает таблицу ... и на 5-м туже самую таблицу выдает! но сам запрос выполнять не хочет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 18:15:32 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Что касаемо : Валентин КА по моему загвозка в том, что не до конца было выполнено обновление базы с версии 4.0 на 5.0 ... Только что сделал экспорт базы под 4-м как sql-запрос и выполнил этот запрос в 5-м. Запрос прошел нормально база создалась уже получается со всеми нюансами 5-го MySQL. Проверил запрос -- таже фигня ... зависает, точнее в конце концов он мне реультат выдал через 2 минуты(на старой базе тоже самое было, просто я никогда этого момента не дожидался :)), в то время как на 4-м он тот же запрос за доли секунды делает ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 18:42:30 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Так может вы ТАКИ покажете вывод EXPLAIN? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 18:44:38 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
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 Прошу прощения за вид таблицы, но ничего лучше придумать не смог... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 19:21:20 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Как по вашему, сканирование 3096455040 за 2 минуты -- это медленно? Может быть, построить нормальные индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 19:24:06 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
3096455040 записей, имелось виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 19:24:45 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
DocAl, ОГРОМНОЕ СПАСИБО! Теперь буду на это обращать особое внимание... Я в 4-м-то индексы определил, а в 5-м чего-то протупил этот момент... думал, что т.к. поля чиловые целые, то он и так не должен слишком долго в них искать .... Шо сказать -- молодой, зеленый ... Учиться, учиться и учиться .... Еще раз спасибо! maXmoзы я бы посоветовал всё через inner join переписать Переписал, результат был тот же, пока индексы не определил, как только определил то оба варианта стали работать быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 19:45:29 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Теперь 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 получилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 19:51:56 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Коль про INNER JOIN сказал, то еще один вопрос: А как лучше-то делать так: Код: plaintext 1. 2. или так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 19:57:22 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
При использовании джойнов индексы очень важны, ведь без них для каждой записи каждой таблицы полностью сканируются все остальные, участвующие в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 20:21:27 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
я где-то читал, что иннер жоин работает лучше запятой. Видать, проглючило. Скажем, вот тут сказано, что если where выглядит как P(T1,T2,T2) = C1(T1) AND C2(T2) AND C3(T3) то эти маленькие условия могут проверяться по ходу жоина, но эти условия записаны для одной таблицы. То есть для запроса Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 12:40:44 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
эээ... раз иксплейн выдал одну строку, значит, умеет :) ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 13:02:54 |
|
||
|
MySQL 5 зависает на запросах которые MySQL 4 нормально отрабатывает?
|
|||
|---|---|---|---|
|
#18+
Попробовал, потестировал немножко (в PHPMyAdmin) у меня получилось, что запрос с "," выполнялся бысрее, чем с "INNER JOIN" ... Хотя есть подозрения, что это еще от того что код длинее запроса получается и сам PHP даёт задрежку ... В самом mysql на этот запрос выдает время 0,00 в любом исполнении ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2005, 15:45:08 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33411556&tid=1853363]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
430ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 759ms |

| 0 / 0 |
