У меня есть сомнения.Мне нужно сделать левое соединение между двумя таблицами и получить только первый результат (я имею в виду первую запись в таблице A, которая ничего не соответствует в таблице B).Это пример
create table a (
id int not null auto_increment primary key,
name varchar(50),
surname varchar(50),
prov char(2)
) engine = myisam;
insert into a (name,surname,prov)
values ('aaa','aaa','ss'),('bbb','bbb','ca'),('ccc','ccc','mi'),('ddd','ddd','mi'),('eee','eee','to'),
('fff','fff','mi'),('ggg','ggg','ss'),('hhh','hhh','mi'),('jjj','jjj','ss'),('kkk','kkk','to');
create table b (
id int not null auto_increment primary key,
id_name int
) engine = myisam;
insert into b (id_name) values (3),(4),(8),(5),(10),(1);
Запрос A:
select a.*
from a
left join b
on a.id = b.id_name
where b.id_name is null and a.prov = 'ss'
order by a.id
limit 1
Запрос B:
select a.*
from a
left join b
on a.id = b.id_name
where b.id_name is null and a.prov = 'ss'
limit 1
Оба запроса дают правильный результат, то есть запись с id =7. Я хочу знать, могу ли я полагаться на запрос B, даже не задавая сортировку по идентификатору, или это просто случай, когда я получаю правильный результат.
Я спрашиваю это, потому что на большом наборе записей (более 10 миллионовстрок), запрос без сортировки сразу дает мне одну запись, а применение сортировки занимает даже более 20 секунд, даже если a.id является первичным ключом.
Заранее спасибо.