Size: a a a

2020 July 22

MF

Misha Fomin in MySQL
Парни привет. Подскажите почему запрос может вечность обрабатываться? в таблице 13 000 000 строк
источник

DE

Denis Efremov in MySQL
Misha Fomin
Парни привет. Подскажите почему запрос может вечность обрабатываться? в таблице 13 000 000 строк
Ну у тебя выборка из таблицы, с подзапросом из той же таблицы который имеет иннер джойн с той же таблицы.
источник

DE

Denis Efremov in MySQL
Одно из двух, или ты сильно умнее меня, или сильно глупее.
источник

DE

Denis Efremov in MySQL
Лучше сформулируй на словах какие данные хочешь получить и покажи  DDL
источник

MF

Misha Fomin in MySQL
Denis Efremov
Лучше сформулируй на словах какие данные хочешь получить и покажи  DDL
Что такое DDL? Этот запрос уже был написан не мною. У меня есть запросы к БД, которые ктото до меня написал. Я их сейчас сел проверять. Вот один никак не обработается... Там строится дерево.
// (2.1) Построение дерева категорий изделий для заданного типа автомобиля (от родительского)
 /*
 Последовательно устанавливая следующие значения parentid, можно получить ещё 4 уровня дерева
 havechild -  Есть ли у этой категории подкатегории: 1 - Есть, 0 - Нет
 Если есть, то ее parentid ставим на вход метода
 */
источник

MF

Misha Fomin in MySQL
проверяю на локальном сервере пока
источник

DE

Denis Efremov in MySQL
DDL гугли.
Для построения дерева не нужно хранить инфу о детях. Достаточно только о родителе
источник

DE

Denis Efremov in MySQL
Глубина не важна. parent_id как форейн ключ на самого себя делает дерево любой вложенности
источник

DE

Denis Efremov in MySQL
havechild — это уже нарушение НФ
источник

НА

Николай Алиферов... in MySQL
Misha Fomin
Парни привет. Подскажите почему запрос может вечность обрабатываться? в таблице 13 000 000 строк
а вечность это сколько? минуты? индексы везде стоят по искомым полям?
источник

DE

Denis Efremov in MySQL
Denis Efremov
havechild — это уже нарушение НФ
Оп, пардон, это псевдоним
источник

DE

Denis Efremov in MySQL
Misha Fomin
проверяю на локальном сервере пока
Кинь запрос текстом
источник

MF

Misha Fomin in MySQL
Николай Алиферов
а вечность это сколько? минуты? индексы везде стоят по искомым полям?
3000 секунд прошло и выдало превышение времени
источник

MF

Misha Fomin in MySQL
ща скину
источник

НА

Николай Алиферов... in MySQL
убери этот exists вообще и order протести это из-за него?
источник

DE

Denis Efremov in MySQL
1 час 40 минут
источник

DE

Denis Efremov in MySQL
Да кстати, там три раза выборка из одной таблицы
источник

DE

Denis Efremov in MySQL
Зачем делать иннер самого себя?
источник

MF

Misha Fomin in MySQL
Denis Efremov
Кинь запрос текстом
SELECT id, description,
           IF(EXISTS(SELECT * FROM passanger_car_trees t1
           INNER JOIN passanger_car_trees t2 ON t1.parentid=t2.id WHERE t2.parentid=100006 AND t1.passangercarid=18371 LIMIT 1), 1, 0) AS havechild
           FROM passanger_car_trees WHERE passangercarid=18371 AND parentId=100006
           ORDER BY havechild
источник

НА

Николай Алиферов... in MySQL
Denis Efremov
Зачем делать иннер самого себя?
ну там есть тяжелые случаи я слышал, в которых это спасает) я думаю профессор подробнее может рассказать @MasterZiv
источник