При выполнении explain в колонке Extra иногда значатся Using filesort; Using temporary.
Что бы это значило? Хороший ответ на английском What does Using filesort mean in MySQL?
Его перевод на русский с дополнениями:
Если в памяти создается временная таблица, хранящая результаты запроса, то это Using temporary. Временная таблица может быть сохранена на диск, если она слишком велика, чтобы поместиться в память.
// TODO: слишком велика - это сколько? по какой еще причине она может быть записана на диск?
Каждый раз, когда сортировка не может быть выполнена по индексу, это using filesort. Плохое имя заставляет нас думать о файлах, но они тут не при чем. Filesort могла бы называться просто sort. На самом деле это quicksort.
Если сортировка больше, чем "sort buffer" (?), то она выполняется по частям. Объем памяти, выделяемый для filesort(), хранится в переменной @@sort_buffer_size. Если сортируемые данные не помещаются в эту память, filesort будет использовать временные файлы, чтобы отсортировать данные по частям. Затем происходит слияние отсортированных частей.
Еще можно почитать Sergey Petrunia’s article on How MySQL executes ORDER BY
Что бы это значило? Хороший ответ на английском What does Using filesort mean in MySQL?
Его перевод на русский с дополнениями:
Если в памяти создается временная таблица, хранящая результаты запроса, то это Using temporary. Временная таблица может быть сохранена на диск, если она слишком велика, чтобы поместиться в память.
// TODO: слишком велика - это сколько? по какой еще причине она может быть записана на диск?
Каждый раз, когда сортировка не может быть выполнена по индексу, это using filesort. Плохое имя заставляет нас думать о файлах, но они тут не при чем. Filesort могла бы называться просто sort. На самом деле это quicksort.
Если сортировка больше, чем "sort buffer" (?), то она выполняется по частям. Объем памяти, выделяемый для filesort(), хранится в переменной @@sort_buffer_size. Если сортируемые данные не помещаются в эту память, filesort будет использовать временные файлы, чтобы отсортировать данные по частям. Затем происходит слияние отсортированных частей.
Еще можно почитать Sergey Petrunia’s article on How MySQL executes ORDER BY
Comments
Post a Comment