tom-it писал(а):
получается перебор всех книг ?Gunnman писал(а):
Почему перебор всех книг?Gunnman писал(а):
select * from knigi where name like '%ро%';1;ромео и джульетта
2;робинзон крузо
3;прошлогодние листья
4;тореро
и т.д. и т.п. А вот запрос
select * from knigi where name like 'ро%';
выбрал бы только то, что ты написал. Так что со знаком "%" поаккуратней.
select * from knigi where name like 'ро%'; - проверяются только ДВЕ первые буквы name
select * from knigi where name like '%ро'; - проверяются только ДВЕ последние буквы name
select * from knigi where name like '%ро%'; - проверяются ВСЕ буквы name
Gunnman писал(а):
Допустим у нас 3 автора и 300 книг (по 100 на каждого)Выбираем первого автора, соответственно сужаем круг поиска до 100 книг этого автора.
Даже если бы ты написал
select * from knigi where name like 'ро%' and author=1;всё равно будет перебрана вся таблица книг БД
Так что тут tom-it прав.
Но при таком запросе отработает оптимизатор запросов, который сначала отберёт все записи, относящиеся к этому автору, во временную таблицу и только потом из этой временной таблицы отберёт записи, удовлетворяющие условию LIKE
------------ Дoбавленo в 08.39:
При 1000000 записей твой запрос будет выполнен за ~15-30 минут.
Это всё справедливо для случая без применения ИНДЕКСНЫХ файлов (таблиц)
Вся надежда только на то, что у tom-it в библиотеке будет книг намного меньше.