У меня есть таблица Pheonix, TableXXX
Когда я делаю этот запрос:
SELECT "LINENAME","XL_CDP","IL_SP","CDP_X","CDP_Y", "SAMPLES" FROM TableXXX WHERE ( "LINENAME" = 'AAA' AND "IL_SP" >= 890 AND "IL_SP" <= 9381);
Вышеуказанный SQL работает медленно, и для получения результата требуется около 50 секунд.
Это объяснение этого пункта:
+----------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
| PLAN | EST_BYTES_READ | EST_ROWS_READ | EST_INFO_TS |
+----------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
| CLIENT 1-CHUNK 1052082 ROWS 314572800 BYTES PARALLEL 1-WAY ROUND ROBIN RANGE SCAN OVER TableXXX [0,'AAA',890] - [0,'AAA',9381] | 314572800 | 1052082 | 1556459749349 |
+----------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------+
Но если я немного изменим SQL, как показано ниже, просто удалите «SAMPLE» из предложения select, он станет намного быстрее, потребуется всего около 1 с.
SELECT "LINENAME","XL_CDP","IL_SP","CDP_X","CDP_Y", FROM TableXXX WHERE ( "LINENAME" IS NOT NULL AND "LINENAME" = 'AAA' AND "IL_SP" >= 890 AND "IL_SP" IS NOT NULL AND "IL_SP" <= 9381);
Этот SQL вернет 25476 записей.
И столбец SAMPLE имеет тип ARRAY, имеет 24000 байтов на запись. А остальные столбцы имеют обычный размер в несколько байтов каждый.
Даже столбец SAMPLES сравнительно больше других столбцов, я думаю, что он все равно должен быть быстрее, чем 50 с, чтобы получить результат.
В этой таблице только 1 регион, и в общей сложности 488277 записей, а общий размер таблицы составляет 12 ГБ.
Приветствия