SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.11.2010 10:47:24

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Мусукл виснет после запроса

помогите после этого запроса мусукл уходит в глубокие раздумия вместе с системой smile

SELECT *FROM skill_acquire as A JOIN skills as S ON (A.skill_id = S.skill_id AND A.skill_level = S.skill_level) LEFT JOIN skill_names as N ON (A.skill_id = N.skill_id AND A.skill_level = N.skill_level) WHERE (A.class_id = $id AND A.get_level <= $max_level) ORDER BY A.get_level, A.skill_id, A.skill_level

Неактивен

 

#2 15.11.2010 14:02:49

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

/me ушел в глубокие раздумия вместе с системой smile

Запрос очень сложный, сделайте его проще. Ну и без explain — смотреть на него
не интересно.

Неактивен

 

#3 15.11.2010 14:21:31

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

Если бы я знал как сделать его проще я бы не спрашивал тут а пыталсся сделать его проще smile если поможет то в качестве информации запрос был сделан изначально под mssql может из-за этого он сжигает моCК mysql big_smile

explain (на сколько я понял что это) ниже


Прикрепленные файлы:
Attachment Icon expl.jpg, Размер: 69,203 байт, Скачано: 538

Неактивен

 

#4 16.11.2010 00:27:55

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

Какой ужас, у Вас нет ни одного индекса в таблицах!

Срочно сделайте индексы на (skill_id, skill_level) в табличках skill_acquire,
skill_names, skills, а также на skill_acquire(class_id, get_level, skill_id, skill_level) smile

Неактивен

 

#5 16.11.2010 10:29:17

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

paulus написал:

Какой ужас, у Вас нет ни одного индекса в таблицах!

Срочно сделайте индексы на (skill_id, skill_level) в табличках skill_acquire,
skill_names, skills, а также на skill_acquire(class_id, get_level, skill_id, skill_level) smile

Всё стало работать как часы smile благодарю! cool

Неактивен

 

#6 23.11.2010 23:26:30

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

новая задача с старыми проблемами smile пробвал ставить индексы, результат ноль, никак не поддаётся мне эта индекс стихия smile. Прошу помощи у укратителя индексов big_smile

SELECT * FROM skill_enchant as E
                        JOIN skill_names as N ON (N.skill_id=$skill_id AND N.skill_level=E.skill_level)
                        WHERE original_skill='$skill_name'
                        ORDER BY enchant_id, route_id

Отредактированно french (23.11.2010 23:28:30)


Прикрепленные файлы:
Attachment Icon exx.png, Размер: 17,546 байт, Скачано: 606

Неактивен

 

#7 24.11.2010 01:48:44

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

Видимо, структуру таблиц все равно надо будет посмотреть.

Неактивен

 

#8 24.11.2010 07:18:14

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

http://i039.radikal.ru/1011/d5/658b8a1e0095.png skill_enchant
http://s011.radikal.ru/i316/1011/6b/71f62de2a938.png skill_names


Прикрепленные файлы:
Attachment Icon enchant.png, Размер: 30,698 байт, Скачано: 587

Неактивен

 

#9 24.11.2010 11:14:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

Аха, они все в энчанте. Тогда, скорее всего, помогут:
skill_enchant(original_skill, enchant_id, route_id)
skill_names(skill_level, skill_id)

Неактивен

 

#10 24.11.2010 12:16:09

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

всёравно не хочет.. а для skill_names если там есть такой индекс, нужно новый добавлять?

вот кстати после минут 5 раздумий выдало результат smile но только половину запроса пришлось убрать, настораживает такой количество строк Oo
http://i034.radikal.ru/1011/78/277ad13eed42t.jpg

кстати я не правильно написал запрос, в оригинале он выглядит так но мне нужно чтобы он выводил данные из mysql smile

$result = mssql_query("SELECT TOP 2 *
                        FROM skill_enchant as E
                        JOIN skill_names as N ON (N.skill_id=$skill_id AND N.skill_level=E.skill_level)
                        WHERE original_skill='$skill_name'
                        ORDER BY enchant_id, route_id"
);


skill_names
http://s014.radikal.ru/i326/1011/98/680de6404936.jpg

skill_enchant
http://s51.radikal.ru/i134/1011/20/03b47147a689.png

Отредактированно french (24.11.2010 12:19:22)

Неактивен

 

#11 24.11.2010 12:58:09

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

Думаю, Вам нужно сделать еще один шаг и отказаться от phpMyAdmin в пользу
какого-нибудь нормального клиента smile

Порядок столбцов в индексах важен. У Вас он плохой smile

Неактивен

 

#12 24.11.2010 17:01:35

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

smile я уже привык к нему, а какой клиент рекомендуете?

Неактивен

 

#13 24.11.2010 17:35:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

mysql smile

Неактивен

 

#14 24.11.2010 20:03:50

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

никак не могу осилить последний пост smile это чтоли шутка такая? big_smile
p.s. переделал индексы запрос всёравно тупит в консоли но почемуто шустро работает при работе с тем с чем должен работать...

Неактивен

 

#15 24.11.2010 20:30:14

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

Я бы свалил всё на клиент, раз работает нормально wink

Неактивен

 

#16 25.11.2010 16:23:06

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Мусукл виснет после запроса

french написал:

никак не могу осилить последний пост smile это чтоли шутка такая? big_smile

почему шутка? есть такой клиент - mysql, его можно запустить и запросики через него кидать серверу.

А еще MySQL GUI Tools, хорошо помогают, если есть удаленный доступ к серверу или сервер на локалхосте

Неактивен

 

#17 26.11.2010 18:36:57

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

Shopen написал:

french написал:

никак не могу осилить последний пост smile это чтоли шутка такая? big_smile

почему шутка? есть такой клиент - mysql, его можно запустить и запросики через него кидать серверу.

А еще MySQL GUI Tools, хорошо помогают, если есть удаленный доступ к серверу или сервер на локалхосте

спасибо на счёт второго smile

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

177    blablabla        price: 188000\nВ shop: 94000


так чтобы текст "price:" и всё что за ним следует удалить smile

Неактивен

 

#18 26.11.2010 19:23:40

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

Зависит от языка. Проще всего в консоли, наверное:
sed -i 's/price.*//' filename

А вот в виндоус для этого нужно будет писать программу sad

Неактивен

 

#19 26.11.2010 21:11:56

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

очень жаль, не силён в написании программ sad черех пхп такое никак не сделать?

Неактивен

 

#20 26.11.2010 22:54:25

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

Всё решил проблемму с помощью хитрости smile

Неактивен

 

#21 03.12.2010 19:15:50

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

привет всем smile это сново я big_smile и сново с дурацким вопросом который только краем касается мусукла.. (ну если хоть краем касается то думаю вы мне не откажите в помощи wink )


есть 2 кейса которые фильтруют выборку из базы никак не могу заставить их подружиться друг с другом smile

этот выводит результат где в таблице commonitem значение 0

Код:

switch($filter_common):
 case 'on':
    $sql = "SELECT *
            FROM items as I
            JOIN item_names as N 
            ON (I.item_type = '$type') AND (I.weapon_type = '$subtype') AND (I.equip_pet = 0) AND (I.crystal_type = '$gr') AND (I.commonitem = 0) AND (I.id = N.id)
            ORDER BY N.name;";
 break;
endswitch;

этот выводит результат где в таблице monsteritem значение 0

Код:

switch($filter_monster):
  case 'on':
    $sql = "SELECT *
            FROM items as I
            JOIN item_names as N 
            ON (I.item_type = '$type') AND (I.weapon_type = '$subtype') AND (I.equip_pet = 0) AND (I.crystal_type = '$gr') AND (I.monsteritem = 0) AND (I.id = N.id)
            ORDER BY N.name";
 break;
endswitch;

по отдельности они работают хорошо, но вместе никак не хотят работать
если делаю так то при загрузке $filter_monster он автоматически плюсует и фильтр $filter_common даже если кейс не стоит в значении on

Код:

      
switch($filter_monster):
  case 'on':
    $sql = "SELECT *
            FROM items as I
            JOIN item_names as N 
            ON (I.item_type = '$type') AND (I.weapon_type = '$subtype') AND (I.equip_pet = 0) AND (I.crystal_type = '$gr') AND (I.monsteritem = 0)  AND (I.commonitem = '$filter_common') AND (I.id = N.id)
            ORDER BY N.name";
 break;
endswitch;

помогите добрые люди (если кто не понял то нужно чтобы при загрузке site.ru/?index.php&filter_monster=on&filter_common=on) загружались оба значения  а не первый

Неактивен

 

#22 03.12.2010 23:58:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

Тут важна логика. Вам нужны строки, которые ИЛИ не монстровые, ИЛИ общие.
Слово «или» написано большими буквами неспроста — это подсказка wink

Неактивен

 

#23 04.12.2010 13:43:49

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

smile такие подсказки мне больше нравятся big_smile хоть есть на чем поразмыслить wink ну за место AND ставлю OR и мусукл опять уходит в глубокие раздумия big_smile трудно мыслить логически если в том над чем думаешь надо обьяснять на пальцах smile

Неактивен

 

#24 04.12.2010 14:33:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Мусукл виснет после запроса

А запрос и EXPLAIN от него? wink

Неактивен

 

#25 04.12.2010 14:55:54

french
Участник
Зарегистрирован: 15.11.2010
Сообщений: 19

Re: Мусукл виснет после запроса

Воть smile не кидаться какашками на cчёт phpmyadmina только big_smile

Код:

EXPLAIN SELECT * 
FROM items AS I
JOIN item_names AS N ON ( I.item_type = '$type' ) 
AND (
I.weapon_type = '$subtype'
)
AND (
I.equip_pet =0
)
AND (
I.crystal_type = '$gr'
)
OR (
I.shadowitem =0
)
AND (
I.id = N.id
)
ORDER BY N.name

Прикрепленные файлы:
Attachment Icon wr.jpg, Размер: 28,507 байт, Скачано: 593

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson