В C переменная внутри файла say example.c предоставляется локальная область. Компилятор ожидает, что переменная будет иметь свое определение внутри одного и того же файла example.c, и когда он не найдет то же самое, это вызовет ошибку. Функция, с другой стороны, имеет глобальную область по умолчанию. Таким образом, вам не нужно явно упоминать компилятор «посмотрите чувак ... вы можете найти определение этой функции здесь». Для функции, содержащей файл, содержащий его объявление, достаточно. (Файл, который вы на самом деле называете заголовочным файлом). Например, рассмотрим следующие 2 файла: example.c
#include<stdio.h>
extern int a;
main(){
printf("The value of a is <%d>\n",a);
}
example1.c
int a = 5;
Теперь, когда вы скомпилируете два файла вместе, используйте следующие команды:
шаг 1) cc -o ex example.c example1.c, этап 2) ./ ex
Вы получаете следующий вывод: значение a равно & lt; 5 & gt;
Прежде всего, вы должны учитывать, что индексы не всегда являются хорошей идеей .
Если Oracle будет читать большинство данных из таблицы, она будет использовать FULL TABLE SCAN, поскольку это быстрее, чем сначала чтение блоков индекса, а затем чтение блоков данных. Слишком много операций ввода-вывода.
Теперь вернемся к вашему вопросу.
Вы можете заставить Oracle использовать индекс, если хотите, предоставив подсказку:
/*+ INDEX(table_name index_name) */
Вы можете добавить его в свой запрос и проверить, что происходит с планом запроса, и сколько будет стоить новый план:
SELECT /*+ INDEX(tableA index_name) */ --replace 'index_name' with the name of your index
d.id,
'Status' "ImportStatus",
p.importid "ImportID",
macid,
p.daterequire "CreateDate",
p.dateimport "DateImPort",
TRANSLATE(p.accrequire USING NCHAR_CS) "CreateBy",
TRANSLATE(p.accimport USING NCHAR_CS) "AccImPort",
0 "isEdit",
employee,
deptid partner,
equipmentid
FROM
(
SELECT
id,
importid,
daterequire,
dateimport,
accrequire,
accimport,
subdeptid employee,
deptid
FROM
tableA
WHERE
estatus = 2
AND createdate BETWEEN to_timestamp('01/01/2019','dd/mm/yyyy') AND to_timestamp('12/02/2019','dd/mm/yyyy')
) p
INNER JOIN tableB d ON d.importid = p.id