поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

    5.4.5. Многостолбцовые индексы

    MySQL может создавать индексы по нескольким столбцам. Индекс может включать в себя до 15 столбцов (на столбцах CHAR и VARCHAR можно также использовать префикс столбца в качестве части индекса)

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

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

    Предположим, создается следующая таблица:

    mysql> CREATE TABLE test (
        ->       id INT NOT NULL,
        ->       last_name CHAR(30) NOT NULL,
        ->       first_name CHAR(30) NOT NULL,
        ->       PRIMARY KEY (id),
        ->       INDEX name (last_name,first_name));
    

    Индекс name является индексом по столбцам last_name и first_name. Этот индекс будет применяться для запросов, указывающих величины в известной области для last_name или для обоих столбцов last_name и first_name. Таким образом, индекс name будет использоваться в следующих запросах:

    mysql> SELECT * FROM test WHERE last_name="Widenius";
    mysql> SELECT * FROM test WHERE last_name="Widenius"
        ->                    AND first_name="Michael";
    mysql> SELECT * FROM test WHERE last_name="Widenius"
        ->                    AND (first_name="Michael" OR first_name="Monty");
    mysql> SELECT * FROM test WHERE last_name="Widenius"
        ->                    AND first_name >="M" AND first_name < "N";
    

    Чтобы получить более подробную информацию о том, как в MySQL используются индексы для улучшения работы запросов, See Раздел 5.4.3, «Использование индексов в MySQL».

     
    © 1997-2005 PHP Club Team
    Rambler's Top100