Партицирование в MySQL, индексы и кэш

340
16 сентября 2017, 23:49

Добрый день. При партицировании таблиц в кэше в оперативе находится только последняя партиция, а все остальные лежат в "холодном кэше", чтобы не засорять оперативу. Есть таблица:

id (primary)
user_id (index)
.....
date (index)

Если сделать партицироание по полю date за каждые пол года, то получится около 20 партиций. Вопрос:

Данный запрос будет забирать данные из всех партиций в холодном кеше? Ведь user_id присутствует во всех партициях?

SELECT * FROM tbl USE INDEX (user_id) WHERE 
          user_id = 1 AND date BETWEEN  "последний месяц"
Answer 1

Если диапазон дат, по которому вы делали партиции и по которому вы ищите, приходится только на какие-то партиции, или даже одну партицию, то другие партиции не будут задействованы.

Подробно в документации.

READ ALSO
Как добавить Java 8 в Android?

Как добавить Java 8 в Android?

Можно ли использовать лямбда-выражения? И вообще - можно ли Java 8 туда добавить? Только официально, а не "левыми" путями

366
Как ускорить GET / POST запросы в Java?

Как ускорить GET / POST запросы в Java?

Нижеприведенный запрос тянет из базы список из таблицы где 1000-1500 строк (id, code, title)Но по времени это происходит не очень быстро

329
Запись в файл List<String[]>

Запись в файл List<String[]>

Есть структура

368
Invalid path: &#39;null.name&#39;

Invalid path: 'null.name'

Пытаюсь сделать выборку из бд согласно заданным параметрамИ получаю такую ошибку:

295