Я изучаю оптимизацию запросов, используя некоторые структуры, такие как индекс, кластер индекса, кластер хэша.У меня есть таблица Customer и Booking.Есть 2 запроса, которые мне нужно оптимизировать
Запрос 1:
SELECT BOOKING.BID, CUSTOMER.CID, BOOKING.SEAT_PRICE
FROM BOOKING, CUSTOMER
WHERE BOOKING.CID= CUSTOMER.CID
AND BOOKING.SEAT_PRICE>200;
Запрос 2:
SELECT BOOKING.BID, CUSTOMER.CID
FROM BOOKING, CUSTOMER
WHERE BOOKING.CID= CUSTOMER.CID
AND CUSTOMER.CID>1900;
Теоретически, для повышения производительности нам необходимоИндекс / кластер индекса / кластер хеша все предикаты в предложениях WHERE, JOIN, ORDER BY ....Однако, когда я пытаюсь следовать этому правилу для вышеупомянутых запросов, он не имеет каких-либо улучшений производительности.
Например, для первого запроса я создаю индекс для обоих столбцов CID таблиц BOOKING и CUSTOMER.Я также создаю индекс по столбцу SEAT_PRICE таблицы BOOKING.Сценарии, которые я запускаю, выполняются следующим образом:
CREATE INDEX BOOKING_SEAT_PRICE ON BOOKING(SEAT_PRICE);
CREATE INDEX BOOKING_CID ON BOOKING(CID);
CREATE INDEX CUSTOMER_CID ON CUSTOMER(CID);
Обратите внимание, что я создаю файл трассировки для просмотра статистики запроса.Я запускаю запрос для создания файла трассировки перед созданием этих индексов.После создания этих индексов я снова запускаю его, чтобы создать другой файл трассировки.Однако новый файл трассировки не показывает каких-либо улучшений во времени, ЦП, истекшем времени, запросах и т. Д.У него даже худшая производительность.
Может кто-нибудь помочь мне с этим, пожалуйста?Это действительно расстраивает меня, потому что я не понимаю почему, я следую точному правилу.Я сделал Google, но безрезультатно.