|
|
|
|
|
для: cheops
(04.06.2011 в 18:18)
| | действительно на хостинге запросы сработал в разы быстрей и без повисонов.
и я знаю почему у меня виснет комп. потому что результат запроса выводит 8 млн записей. Вот поэтому и проблема. А запрос выполняется нормально 0.0169 сек. | |
|
|
|
|
|
|
|
для: Ильдар
(04.06.2011 в 18:14)
| | Это нормально. Во-первых у локальных машин очень слабая подсистема ввода-вывода, даже на самых простецких серверах она обычно значительно сильнее. Во-вторых у вас наверняка не очень сильно настроен MySQL и не "разогрет", так как у вас нет большого количества обращений и вы не можете заполнить кэши, даже если они настроены. Работать с большой базой локально - это действительно морока (многие операции протекают слишком долго). | |
|
|
|
|
|
|
|
для: cheops
(04.06.2011 в 17:14)
| | локальна машина. Но запрос этот выполняется неопределенное время. Просто виснет и все | |
|
|
|
|
|
|
|
для: Ильдар
(04.06.2011 в 16:10)
| | Ну вроде все впорядке ключи используются. Сколько времени запрос выполняется и где (сервер, локальная машина)? | |
|
|
|
|
|
|
|
для: Ильдар
(04.06.2011 в 15:59)
| | запрос немного исправил:
EXPLAIN SELECT mk.year, mk.mark_name, md.model_name
FROM cars AS y
LEFT JOIN cars AS mk ON mk.year = y.year
LEFT JOIN cars AS md ON md.mark_id = mk.mark_id
WHERE y.year =2009
|
результат:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE y ref year year 4 const 6903 Using index
1 SIMPLE mk ref year year 4 const 6903
1 SIMPLE md ref mark_id mark_id 4 automobiles.mk.mark_id 2368
|
| |
|
|
|
|
|
|
|
для: cheops
(04.06.2011 в 15:32)
| | Ты наверное имел ввиду EXPLAIN, понял, проверю ща | |
|
|
|
|
|
|
|
для: Ильдар
(04.06.2011 в 15:18)
| | Собственно используется индекс или нет, можно посмотреть при помощи оператора EXPLODE
EXPLODE SELECT mk.year, mk.mark_name, md.model_name FROM `cars` AS y
LEFT JOIN cars AS mk ON mk.year = y.year
LEFT JOIN cars AS md ON md.mark_id = mk.mark_id
WHERE y.year = 2009
|
| |
|
|
|
|
|
|
|
для: Ильдар
(04.06.2011 в 15:18)
| | Индекс не влияет вот на это
>SELECT mk.year, mk.mark_name, md.model_name FROM `cars` AS y
В первую очередь он влияет на
>WHERE y.year = 2009
Во вторую на
>ON mk.year = y.year
>ON md.mark_id = mk.mark_id | |
|
|
|
|
|
|
|
для: Ильдар
(04.06.2011 в 15:15)
| | вот запрос такого вида делаю. Может быть конечно я делаю это неправильно - после майских физических нагрузок мозг притормаживает - но от запроса виснет:
SELECT mk.year, mk.mark_name, md.model_name FROM `cars` AS y
LEFT JOIN cars AS mk ON mk.year = y.year
LEFT JOIN cars AS md ON md.mark_id = mk.mark_id
WHERE y.year = 2009
|
| |
|
|
|
|
|
|
|
для: cheops
(04.06.2011 в 15:00)
| | да, сделано намеренно, потому что в запросах участвуют тлько первые 6 стоблцов | |
|
|
|
|