MySQL 8.0引入了全文索引的另一個變化是InnoDB表類型的基于全文索引的搜索性能得到了大幅增強。在之前的版本中,InnoDB全文索引只支持MyISAM表類型的搜索,然而MyISAM表類型的性能在高負載情況下會受到較大影響。
CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body) ) ENGINE=InnoDB; SELECT * FROM articles WHERE MATCH (title,body) AGAINST('search-string');
當您在給定的較大表中進行全文搜索時,InnoDB表類型的全文索引比MyISAM表類型的全文索引有更好的性能。更重要的是,InnoDB表類型還支持ACID事務和行級鎖定等高級特性。 因此,MySQL使用InnoDB表類型進行全文搜索是一個很好的選擇。
如果您有需要對全文索引結果進行排序或更改查詢方式,在MySQL 8.0中,您可以使用全文索引在InnoDB表類型中進行排序。比如可以在上述代碼中加入ORDER BY語句來排序。
SELECT * FROM articles WHERE MATCH (title,body) AGAINST('search-string') ORDER BY title ASC;
總體來說,MySQL 8.0中InnoDB表類型的全文索引的升級給開發者帶來了更好的選擇。除了支持高級特性外,它還提供更高的性能也是一個顯著的優點。