Задать вопрос
@dmsirotenko

Оцените запрос с точки зрения производительности?

Имеется три таблицы:
libavtor (AvtorId, BookId),
libbook (BookId, Title),
libavtorname (AvtorId, FirstName, LastName).
Вот запрос на выборку имени автора и названия книги:
SELECT book.BookId, book.Title, avtorname.FirstName, avtorname.LastName
FROM libavtor avtor, libbook book, libavtorname avtorname
WHERE book.BookId = avtor.BookId AND avtor.AvtorId = avtorname.AvtorId AND book.Title LIKE '%стартап%'
ORDER BY book.BookId ASC;

Нормальный запрос или можно как-то улучшить его и сократить время выполнения?
  • Вопрос задан
  • 2231 просмотр
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
begemot_sun
@begemot_sun
Программист в душе.
JOIN следует использовать.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Сделайте EXPLAIN своего запроса и посмотрите сами.
Ответ написан
Комментировать
@SpaceMaster1
если автор пришел с таким вопросом очевидно что он не знает что такое explain.
использование join определенно вредный совет, во первых данный запрос интерпритатор и так переделает в join,
во вторых не известна схема индексирования, в третьих гуру вообще не используют join.

автор покажите нам
show create table libavtor;
show create table libbook;
show create table libavtorname;
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
LIKE '%стартап%'
Других фильтров по book нету - это не может работать быстро.

Используйте полнотекстовый поиск, штатный или сторонний (sphinx, например)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы