[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Структура многое ко многим (MySQL)
Страницы: 1, 2
Эли4ка
Цитата (comolov @ 21.03.2019 - 00:23)
col_str ищется по рег. выражению

выборка внутреннего селекта 30к
выборка внешнего селекта 25к

время - 3.8s, с лимитом 1000 - 150ms

А зачем там регулярное выражение, если ТС нужно с IN. ну и время конечно оооочень долго sad.gif
FatCat
Цитата (Kusss @ 21.03.2019 - 00:58)
Цитата
Если в IN попадает много значений, лучше от него отказаться
А как тогда сделать ? И если не сложно - с примером.

Была похожая ситуация. Если в IN попадало больше 10–15 элементов, начинались жуткие тормоза. Сделал запрос в цикле.

_____________
Бесплатному сыру в дырки не заглядывают...
VeRTak
Цитата (Kusss @ 21.03.2019 - 01:58)
А как тогда сделать ? И если не сложно - с примером.


Я обычно пишу хранимую процедуру и в ней уже выполняю всю логику исходя из задачи, в выходные если будет время постараюсь накидать
comolov
Цитата
А зачем там регулярное выражение

Чтоб сделать большую выборку, в in класть у меня нечего
Эли4ка
Цитата (comolov @ 21.03.2019 - 11:00)
Чтоб сделать большую выборку, в in класть у меня нечего

В смысле нечего класть?
comolov
Цитата
В смысле нечего класть?

col_str - колонка с уникальными строками
Kusss
Загрузил некоторое количество данных.
8 240 компаний , 148 612 Оквэдов.
SELECT
*
FROM
`data_company`
WHERE

id IN (
SELECT
`company_id`
FROM
`data_okved_inn`
WHERE
( `okved_cod` LIKE '41%' OR `okved_cod` LIKE '42%' OR `okved_cod` LIKE '43%' OR `okved_cod` LIKE '71.1%' )
GROUP BY
`company_id`
)
Отображение строк 0 - 3816 (3817 всего, Запрос занял 0.0949 сек.)
Kusss
Забыл добавить , это при выводе ВСЕХ данных.
А если по 30
Отображение строк 0 - 29 (3817 всего, Запрос занял 0.0007 сек.)
comolov
При таком количестве все будет быстро, сгенерь таблицу в несколько миллионов.
По идее при 1кк компаний выборка внутреннего селекта может составить 100к и более
Kusss
SELECT
*
FROM
`data_company`
WHERE

id IN (
SELECT
`company_id`
FROM
`data_okved_inn`
WHERE
( `okved_cod` LIKE '41%' OR `okved_cod` LIKE '42%' OR `okved_cod` LIKE '43%' OR `okved_cod` LIKE '71.1%' )
GROUP BY
`company_id`
)
Отображение строк 0 - 24 (76530 всего, Запрос занял 22.8623 сек.)

База наполнилась.
271 489 компаний , 3 194 943 Оквэдов.
Медленно, но такие запросы это самый жесткий вариант.
Valick
Цитата (Kusss @ 10.01.2020 - 16:58)
`okved_cod` LIKE '41%' OR `okved_cod` LIKE '42%' OR `okved_cod` LIKE '43%' OR `okved_cod` LIKE '71.1%'

ужас ужасный

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Ужас не в этом.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.