Spec-Zone .ru
спецификации, руководства, описания, API

13.2.4. HANDLER Синтаксис

HANDLER tbl_name OPEN [ [AS] alias]HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)    [ WHERE where_condition ] [LIMIT ... ]HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }    [ WHERE where_condition ] [LIMIT ... ]HANDLER tbl_name READ { FIRST | NEXT }    [ WHERE where_condition ] [LIMIT ... ]HANDLER tbl_name CLOSE

HANDLER оператор обеспечивает прямой доступ к табличным интерфейсам механизма хранения. Это доступно для InnoDB и MyISAM таблицы.

HANDLER ... OPEN оператор открывает таблицу, делая это доступное последующее использование HANDLER ... READ операторы. Этот табличный объект не совместно используется другими сеансами и не закрывается до вызовов сеанса HANDLER ... CLOSE или сеанс завершается. Если Вы открываете таблицу, используя псевдоним, дальнейшие ссылки на открытую таблицу с другим HANDLER операторы должны использовать псевдоним, а не имя таблицы.

Первое HANDLER ... READ синтаксис выбирает строку, где индексирование указанного удовлетворяет данные значения и WHERE условие соблюдают. Если у Вас есть многократный столбец, индексируют, определяют индексировать значения столбцов как список разделенных запятой значений. Или определите значения для всех столбцов в индексировании, или определите значения для крайнего левого префикса индексировать столбцов. Предположите что индексирование my_idx включает названные три столбца col_a, col_b, и col_c, в том порядке. HANDLER оператор может определить значения для всех трех столбцов в индексировании, или для столбцов в крайнем левом префиксе. Например:

HANDLER ... READ my_idx = (col_a_val,col_b_val,col_c_val) ...HANDLER ... READ my_idx = (col_a_val,col_b_val) ...HANDLER ... READ my_idx = (col_a_val) ...

Использовать HANDLER интерфейс, чтобы обратиться к таблице PRIMARY KEY, используйте идентификатор в кавычках `PRIMARY`:

HANDLER tbl_name READ `PRIMARY` ...

Второе HANDLER ... READ синтаксис выбирает строку от таблицы в, индексируют порядок, который соответствует WHERE условие.

Третье HANDLER ... READ синтаксис выбирает строку от таблицы в естественном порядке строк, который соответствует WHERE условие. Это быстрее чем HANDLER tbl_name READ index_name когда полное сканирование таблицы требуется. Естественный порядок строк является порядком, в котором строки сохранены в a MyISAM табличный файл данных. Этот оператор работает на InnoDB таблицы также, но нет такого понятия, потому что нет никакого отдельного файла данных.

Без a LIMIT пункт, все формы HANDLER ... READ выберите единственную строку, если Вы доступны. Чтобы возвратить определенное число строк, включайте a LIMIT пункт. У этого есть тот же самый синтаксис что касается SELECT оператор. См. Раздел 13.2.9,"SELECT Синтаксис".

HANDLER ... CLOSE закрывает таблицу, которая была открыта с HANDLER ... OPEN.

Есть несколько причин использовать HANDLER интерфейс вместо нормального SELECT операторы:

HANDLER несколько низкоуровневый оператор. Например, это не обеспечивает непротиворечивость. Таким образом, HANDLER ... OPEN не берет снимок таблицы, и не блокирует таблицу. Это означает что после a HANDLER ... OPEN заявление делается, табличные данные могут быть изменены (текущим сеансом или другими сеансами), и эти модификации могли бы быть только частично видимыми к HANDLER ... NEXT или HANDLER ... PREV сканирования.

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

TRUNCATE TABLE поскольку таблица закрывает все обработчики для таблицы, которые были открыты с HANDLER OPEN.

Если таблица сбрасывается с FLUSH TABLES tbl_name WITH READ LOCK был открыт с HANDLER, обработчик неявно сбрасывается и теряет свою позицию.

В предыдущих версиях MySQL, HANDLER не поддерживался с разделенными таблицами. Это ограничение удаляется, начинаясь с MySQL 5.7.1.