当前位置:Gxlcms > mysql > MySQLInnoDB與PostgreSQL的PartialIndex(es)是不一樣

MySQLInnoDB與PostgreSQL的PartialIndex(es)是不一樣

时间:2021-07-01 10:21:17 帮助过:23人阅读

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 模式節省空間…

人气教程排行