Здравствуйте, Sinclair, Вы писали:
S>Я про них и говорю. g_to и g_from — это алиасы для таблицы groups. В ней поле id должно быть объявлено как primary key. Если нет — это надо починить; если да — то sqlite сам создаст для них индексы.
Я спрашивал про Индекс не на ID, а на "-ID", именно это и используется при соединении для таблиц Groups.
S>Можете сходить по ссылке и поиграть: https://www.db-fiddle.com/f/cwvYp2P2SB2a2HzVRK3ZWm/5
не игрался с Sqlite, но Oracle и PostGreSql дают следующий пример:
Есть:
таблица tb1 (id number ,name varchar2(200)), есть 2 индекса по полю id и name
таблица tb2 (id_tb1 number ,name varchar2(200)), есть индекс по полю id_tb1
эмулируем отрицательное ко-во в 1-й таблице, и делаем соединение со 2-й таблицей:
--1-й вариант (соединение аналогично соединению как у автора)
select *
from
(select -id as id, name from tb1 where name like 'тру-ля-ля%') q
join tb2 qq on (q.id=-qq.id_tb1);
--Индекс по name используется, по id_tb1 не используется (и не должен),должен использоваться по "-id_tb1", а его нет
select *
from
(select -id as id, name from tb1 where name like 'тру-ля-ля%') q
join tb2 qq on (-q.id=qq.id_tb1);
--Индекс по name используется, по id_tb1 Индекс используется