Привет, я не очень много знаю о SQL, это определенно одно из моих слабых мест. это Oracle DB.
У меня есть 2 таблицы:
TAXI_ROUTES_TABLE:
ID | ORIGIN | DESTINATION | TAXI_NUMBER | STOPS | DAY_OF_OPERATION | INSERT_DATE
123 NORTH AVE CAMPBELL 1552 1W;2T;4Y 01-FEB-20 27-DEC-19
124 LEMMON AVE HENRY ST 1511 1R;5G;P3 02-FEB-20 25-DEC-19
TAXI_FARE_TABLE:
ID | ORIGIN | DESTINATION | TAXI_NUMBER | STOPS | FARE_TYPE | FARE_TYPE_AVAIL
123 NORTH AVE CAMPBELL 1552 1W;2T;4Y SENIOR 5
123 NORTH AVE CAMPBELL 1552 1W;2T;4Y STUDENT 10
123 NORTH AVE CAMPBELL 1552 1W;2T;4Y EMPLOYEE 10
124 LEMMON AVE HENRY ST 1511 1R;5G;P3 SENIOR 5
124 LEMMON AVE HENRY ST 1511 1R;5G;P3 STUDENT 3
124 LEMMON AVE HENRY ST 1511 1R;5G;P3 EMPLOYEE 10
TAXI_ROUTES_TABLE INDEX:
STOPS, TAXI_NUMBER, DESTINATION, ORIGIN, DAY_OF_OPERATION
CREATE INDEX "TAXI_ADMIN"."IX01_TAXI_ROUTES_TABLE" ON
"TAXI_ADMIN"."TAXI_ROUTES_TABLE" ("STOPS", "TAXI_NUMBER", "DESTINATION",
"ORIGIN", "DAY_OF_OPERATION ")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TAXI_ADMIN" ;
TAXI_FARE_TABLE не имеет индексов.
В этих таблицах содержатся миллионы записей . одни и те же записи находятся в обеих таблицах, просто в таблице тарифов такси они повторяются из-за типов тарифов для каждого такси.
, поэтому я пытаюсь выполнить объединение, чтобы получить все последние вставленные записи и типы тарифов для них. Так что я должен только вернуть записи, вставленные в 27-DE C -19.
Моя проблема: В моем запросе истекает ограничение по времени, оно занимает вечность. Буду очень признателен за ваше руководство по этому вопросу.
SQL:
SELECT R.ID,
R.ORIGIN,
R.DESTINATION,
R.TAXI_NUMBER,
R.STOPS,
R.DAY_OF_OPERATION,
R.INSERT_DATE,
F.FARE_TYPE,
F.FARE_TYPE_AVAIL
FROM TAXI_ADMIN.TAXI_ROUTES_TABLE R, TAXI_ADMIN.TAXI_FARE_TABLET F
WHERE INSERT_DATE = (SELECT MAX(INSERT_DATE) FROM TAXI_ADMIN.TAXI_ROUTES_TABLE)
AND R.ID = F.ID
ORDER BY R.ORIGIN, R.DESTINATION, R.DAY_OF_OPERATION;
Я не уверен, как сделать запрос быстрее. Когда я бегу без заказа довольно быстро, но заказ занимает очень много времени.
спасибо