dbo:abstract
|
- Within computing and computer science, an expression index, also known as a function based index, is a database index that is built on a generic expression, rather than one or more columns. This allows indexes to be defined for common query conditions that depend on data in a table, but are not actually stored in that table. A common use for an expression index is to support case-insensitive searching or constraints. For example, if a web site wants to make user names case-insensitive, but still preserve the case as originally entered by the user, an index can be created on the lower-case representation of the user name: CREATE INDEX users__last_name_lower ON users( lower( last_name ) ); That will create a unique index on "lower(last_name)". Any queries that search on "lower(last_name)" could then make use of that index: SELECT user_id FROM users WHERE lower( last_name ) = lower( 'Smith' ); (en)
- 式インデックス(しきインデックス、英: expression index)または関数インデックス(英: function-based index)は関係データベース管理システムで用いられるインデックスの中で、列の組み合わせの代わりに任意の式の結果をキーとするものを指す。式インデックスを使うと、テーブルに格納された実際のデータとは異なるキーでの検索が可能になる。 式インデックスの一般的な使用例として、大文字小文字を区別しない検索または一意性制約がある。例えば、ユーザ名を大文字小文字を区別せずに検索を行い、かつ入力されたユーザ名の大文字小文字を保持したい場合が挙げられる。この場合、小文字に変換して格納するだけは要件を満たせない。一意性制約のための UNIQUE INDEX は、大文字もしくは小文字に変換後のユーザ名 (user_name) に対して定義できる: CREATE UNIQUE INDEX idx_user_name_lower ON user_table( lower( user_name ) ); 検索クエリは 句に lower(user_name) を指定することで、このインデックスを使うことができる: SELECT user_id FROM user_table WHERE lower(user_name) = lower('Decibel'); (ja)
- Индекс выражения, так же известный как основанный на функции индекс, это индекс базы данных, построенный на общем выражении, а не на одном или более столбцах. Это позволяет индексам быть определенными для общих условий запроса, которые используют информацию в таблице, но сами там не находятся. CREATE INDEX создаёт индексы по указанному столбцу(ам) заданного отношения, которым может быть таблица или материализованное представление. Выражение в предложении WHERE может ссылаться только на столбцы нижележащей таблицы, но не обязательно ограничиваться теми, по которым строится индекс. Индекс выражения обычно используется чтобы поддержать поиск без учета регистра на ограничения. Например, если сайт хочет чтобы имена пользователей не учитывали регистр, но сохранился именно оригинальный регистр, как было введено пользователем, то можно создать индекс, зависящий от отображения имени пользователей в нижнем регистре: CREATE INDEX users__last_name_lower ON users( lower( last_name ) ); Это создаст уникальный индекс на "lower(last_name)". Все запросы, ищущие "lower(last_name)" смогут потом использовать этот индекс: SELECT user_id FROM users WHERE lower( last_name ) = lower( 'Smith' ); Для столбцов типов CHAR и VARCHAR с помощью параметра col_name(length) могут создаваться индексы, для которых используется только часть столбца (для столбцов BLOB и TEXT нужно указывать длину). Команда, приведенная ниже, создает индекс, используя первые 10 символов столбца name: mysql> CREATE INDEX part_of_name ON customer (name(10)); Поскольку большинство имен обычно имеют отличия друг от друга в первых 10 символах, данный индекс не должен быть намного медленнее, чем созданный из столбца name целиком. Кроме того, используя неполные столбцы для индексов, можно сделать файл индексов намного меньше, а это позволяет сэкономить место на диске и к тому же повысить скорость операций INSERT! В некоторых случаях MySQL не использует индекс, даже если это возможно. Несколько примеров таких ситуаций приведено ниже:
* Если использование индекса требует от MySQL прохода более чем по 30% строк в данной таблице (в таких случаях просмотр таблицы, по всей видимости, окажется намного быстрее, так как потребуется выполнить меньше операций поиска). Следует учитывать, что если подобный запрос использует LIMIT по отношению только к извлекаемой части строк, то MySQL будет применять индекс в любом случае, так как небольшое количество строк можно найти намного быстрее, чтобы вернуть результат.
* Если диапазон изменения индекса может содержать величины NULL при использовании выражений ORDER BY ... DESC (ru)
|
rdfs:comment
|
- 式インデックス(しきインデックス、英: expression index)または関数インデックス(英: function-based index)は関係データベース管理システムで用いられるインデックスの中で、列の組み合わせの代わりに任意の式の結果をキーとするものを指す。式インデックスを使うと、テーブルに格納された実際のデータとは異なるキーでの検索が可能になる。 式インデックスの一般的な使用例として、大文字小文字を区別しない検索または一意性制約がある。例えば、ユーザ名を大文字小文字を区別せずに検索を行い、かつ入力されたユーザ名の大文字小文字を保持したい場合が挙げられる。この場合、小文字に変換して格納するだけは要件を満たせない。一意性制約のための UNIQUE INDEX は、大文字もしくは小文字に変換後のユーザ名 (user_name) に対して定義できる: CREATE UNIQUE INDEX idx_user_name_lower ON user_table( lower( user_name ) ); 検索クエリは 句に lower(user_name) を指定することで、このインデックスを使うことができる: SELECT user_id FROM user_table WHERE lower(user_name) = lower('Decibel'); (ja)
- Within computing and computer science, an expression index, also known as a function based index, is a database index that is built on a generic expression, rather than one or more columns. This allows indexes to be defined for common query conditions that depend on data in a table, but are not actually stored in that table. CREATE INDEX users__last_name_lower ON users( lower( last_name ) ); That will create a unique index on "lower(last_name)". Any queries that search on "lower(last_name)" could then make use of that index: SELECT user_id FROM users WHERE lower( last_name ) = lower( 'Smith' ); (en)
- Индекс выражения, так же известный как основанный на функции индекс, это индекс базы данных, построенный на общем выражении, а не на одном или более столбцах. Это позволяет индексам быть определенными для общих условий запроса, которые используют информацию в таблице, но сами там не находятся. CREATE INDEX создаёт индексы по указанному столбцу(ам) заданного отношения, которым может быть таблица или материализованное представление. Выражение в предложении WHERE может ссылаться только на столбцы нижележащей таблицы, но не обязательно ограничиваться теми, по которым строится индекс. (ru)
|