![]() |
Совсем хитрый вопрос про MySQL
Прет!
Итак мини чунга чанга. Есть две ну очень большие таблицы, тип - innoBD склейка производиться через внешние ключики.. Вариант1 SELECT Id,Name FROM tbl_1 WHERE UID IN (Select UID FROM tbl_2 WHERE Selected=1) работает будем считать 10 секунд. Subquery выдает 10 строк, весь запрос - теже 10 строк.. Вариант 2 SELECT Id,Name FROM tbl_1,tbl_2 WHERE Selected=1 Работает 8 секунд И победитель! array = Select UID FROM tbl_2 WHERE Selected=1 SELECT Id,NAME from tbl_1 WHERE и тут раскручиваем полученый array .. Работает гдето 0.002 секунды Даже если в array пара сотен значений работает сильно быстрее.. в tbl_1 милион значений в tbl_2 - 100к Итак господа присяжные заседатели.. что за фигня такая? |
юзайте кнопочку code чтоли... три минуты втыкал где текст а где запрос
========= по сабжу -ничё не понял. давай дампы примеров таблиц, и запросы. разве что поинтересуюсь чистотой экскремента - мусю перезапускали перед каждым опытом? Она очень хорошо кэширует результаты. Как раз на уровне полученных вами разниц в скорости :) |
пользуйте JOIN - должно быть быстрее и красивее
|
Часовой пояс GMT +3, время: 03:33. |
Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.