Вы можете определить этот отдельный раздел, используя модульную арифметику c
MOD(<formula which's argument of hash function>,<number of partitions>)
при условии, что у вас есть 2 раздела
CREATE TABLE messages(ID int, timestamp int)
PARTITION BY HASH( timestamp DIV 43200 )
PARTITIONS 2;
поиск имен разделов по
SELECT CONCAT( 'p',MOD(timestamp DIV 43200,2)) AS partition_name, timestamp
FROM messages;
и определите имя связанного раздела для значения 1581708508 столбца метки времени (предположим, p1
). Затем используйте
SELECT MAX(id)
FROM messages PARTITION(p1)
, чтобы получить все записи только в разделе p1
без необходимости условия WHERE
, такого как
WHERE timestamp BETWEEN 1581708508 AND 1581708807
Btw, все разделы могут быть перечислены через
SELECT *
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_name='messages'
Демо