Home  >  Article  >  Database  >  MySQL InnoDB 與 PostgreSQL 的 Partial Index(es) 是不一樣

MySQL InnoDB 與 PostgreSQL 的 Partial Index(es) 是不一樣

WBOY
WBOYOriginal
2016-06-07 16:38:381332browse

MySQL InnoDB 指的 Partial Index 是: An index that represents only part of a column value, typically the first N characters (the prefix) of a long VARCHAR value. 而 PostgreSQL 指的 Partial Indexes 是: A partial index is an index built ove

MySQL InnoDB 指的 Partial Index 是:

An index that represents only part of a column value, typically the first N characters (the prefix) of a long VARCHAR value.

而 PostgreSQL 指的 Partial Indexes 是:

A partial index is an index built over a subset of a table; the subset is defined by a conditional expression (called the predicate of the partial index). The index contains entries only for those table rows that satisfy the predicate. Partial indexes are a specialized feature, but there are several situations in which they are useful.

先講結論,PostgreSQL 可以做掉 MySQL InnoDB 的 Partial Index 想做的事情,而且還更多。

MySQL InnoDB 的 Partial Index 是設定對 prefix index (對字串前面的 n bytes),可能的情況是 CHAR(32) 只對前面 16 bytes 索引。

PostgreSQL 的 Partial Indexes 受益於許多方面而更強大。因為有 Indexes on Expressions,所以除了可以像 MySQL 對 prefix 索引外,也可以索引 suffix,甚至是索引透過 string function 得出來的值。

像是 PostgreSQL 可以設定「我只要索引一月一日出生的人的 username」:

CREATE INDEX test_index ON test_table (username) WHERE birth_month = 1 AND birth_day = 1;

在 MySQL 裡需要反正規化後下 index,或是拆出另外一個表格再下 index 的問題,在善用 PostgreSQL 這些功能就可以省下不少功夫…

Related Posts:

  • Instagram 說明用 PostgreSQL 的五個優點…
  • MySQL 對 VARCHAR 的 Index 空間佔用的問題…
  • Percona 的「Advanced MySQL Query Tuning」…
  • MySQL 5.7…
  • 用 Percona XtraBackup 備份時用 compact 模式節省空間…

MySQL InnoDB 與 PostgreSQL 的 Partial Index(es) 是不一樣

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn