Как сделать быстрый sql запрос?

V
На сайте с 11.02.2004
Offline
33
995

Есть в БД таблицы: Authors (информация о авторах книг), Books(информация о книгах) и

Categories (категория книги)

Есть данные для запроса -"фио автора книги" и "название книги". Как сделать оптимальный максимально быстрый запрос, чтобы выбрать информацию о книге, ее категории и ее авторе?

Сейчас у меня есть

"SELECT BookName, AuthorFIO, CategoryName FROM Authors, Books, Categories WHERE BookName = '$book_name' and AuthorFIO='$avtor_fio' and $Categories.CategoryId = Books.CategoryId";

Принцип правильный или можно сделать запрос по другому, быстрее?

Как можно узнать скорость выполнения запроса к БД?

DU
На сайте с 20.10.2006
Offline
105
#1

Странный запрос. Таблицы между собой не связаны. И что вобще за бред написан: хотите из базы получить имя автора, если имя уже извесно. Зачем из базы зпрашивать название книги если название уже извесно.

V
На сайте с 11.02.2004
Offline
33
#2

Да извиняюсь, упростить решить и напутал. Известны лишь url автора и url книги

Вот мой запрос:

$query = "SELECT BookName, BookURLPage, BookPic,BookDescription,BookDownloadCount,

BookURLMain, AuthorFIO, AuthorURLPage, CategoryName, CategoryURLName FROM $bookstable,$authorstable,$categoriestable

WHERE BookURLMain = '$book_url' and AuthorURLPage='$avtor_url' and $categoriestable.CategoryId = $bookstable.CategoryId";

V
На сайте с 11.02.2004
Offline
33
#3

Таблицы связаны в бд через:

AuthorId (Книги-авторы)

CategoryId (Книги-категории)

М
На сайте с 08.02.2006
Offline
59
#4

Через JOIN по идее быстрее. Что-то типа такого


SELECT ...
FROM $bookstable A
LEFT JOIN $authorstable B ON A.AuthorID=B.AuthorID
LEFT JOIN $categoriestable C ON A.CategoryId=C.CategoryID
WHERE A.BookURLMain='$book_url'

Индексы только не забудьте поставить на столбцы по которым происходит связка

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий