Как оптимизировать запрос Oracle с кластерами? - PullRequest
0 голосов
/ 17 марта 2019

Мне нужно оптимизировать запрос с использованием кластеров (в Oracle), но у меня возникают проблемы с пониманием документации.

Это запрос:

SELECT COUNT(*) FROM TABLE1, TABLE2, TABLE3 
WHERE TABLE1.col1=TABLE3.col3
AND TABLE2.col1=TABLE3.col4
AND TABLE1.col2=1

Я понимаю, что мне нужно создать кластер, используя что-то вроде этого

CREATE CLUSTER cluster_1(col2 INTEGER)

, а затем создать таблицу с использованием этого кластера

CREATE TABLE TABLE1_CLUSTER

но тот факт, что я использую 3 разные таблицы, сбивает меня с толку.

1 Ответ

1 голос
/ 17 марта 2019

Ваш запрос должен быть написан так:

SELECT COUNT(*)
FROM TABLE1 JOIN
     TABLE3
     ON TABLE1.col1 = TABLE3.col3 JOIN
     TABLE2
     ON TABLE2.col1 = TABLE3.col4
WHERE TABLE1.col2 = 1;

Обычный подход к оптимизации заключается в использовании индексов:

  • TABLE1(col2, col1)
  • TABLE3(col3, col4)
  • TABLE2(col1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...