powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Оптимизировать запрос
7 сообщений из 7, страница 1 из 1
Оптимизировать запрос
    #38676941
Critically
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Будьте так любезны уважаемые форумчане, помогите оптимизировать запрос:
Код: sql
1.
UPDATE contacts SET operator_id=(SELECT operator_id FROM ru_operator_data_new WHERE INSTR( SUBSTR( phone, 2 ) , ru_operator_data_new.oper_prefix)  =1 ORDER BY LENGTH( oper_prefix ) DESC LIMIT 1)



Таблички:

contacts:
operator_id INTEGER NULL
phone CHAR(255) 79050000000


ru_operator_data_new:
oper_prefix VARCHAR(20) 1
operator_id INTEGER 9050


Если допустим в базе 2000 записей выполняется, минут 20 этот запрос. Если ли способ его оптимизировать ?
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #38676963
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Critically,

А что означает oper_prefix с значением '1'? Может кусок текстовых данных покажете
У нас в БД используется примерно такой способ получения префикса, выбирается первый по максимальной длине совпадения. Попробуйте под своё решение подогнать.
Код: sql
1.
2.
3.
4.
5.
6.
7.
-- Текстовая константа - номер телефона абонента
-- phone_prefix - телефонный префикс (791812, 791754, 7912, и т.д.)

select *
from prefix
where substr("79051234567", 1, length(phone_prefix)) = phone_prefix
order by length(phone_prefix) desc
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #38676964
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
limit 1, забыл дописать.
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #38677029
Critically,

интересные мысли по решению твоей задачи есть тут .
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #38677193
Critically
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLADCritically,

А что означает oper_prefix с значением '1'? Может кусок текстовых данных покажете
У нас в БД используется примерно такой способ получения префикса, выбирается первый по максимальной длине совпадения. Попробуйте под своё решение подогнать.
Код: sql
1.
2.
3.
4.
5.
6.
7.
-- Текстовая константа - номер телефона абонента
-- phone_prefix - телефонный префикс (791812, 791754, 7912, и т.д.)

select *
from prefix
where substr("79051234567", 1, length(phone_prefix)) = phone_prefix
order by length(phone_prefix) desc




Перепутал значения я oper_prefix должен быть 9050, а вот operator_id 1
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #38677200
Critically
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть запроса такова. Нужно выяснить operator_id у телефонного номера. Для этого ямы прогоняем номер по префиксам, находим савподения и выдаем operator_id,

Надеюсь понятно объяснил
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #38677770
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Непонятно.

Читай инструкцию: 13467826
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Оптимизировать запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]