MySQL是一種關系型數據庫管理系統(RDBMS),廣泛用于各種web應用程序和網站。MySQL 8.0是最新版本,于2018年發布。
MySQL 8.0引入了一些新功能和性能優化,其中一個重要的更新是新款表(new table)。新款表是將InnoDB存儲引擎的JSON數據類型與全文索引相結合的結果。它提供了一種新的方式來存儲和查詢文本數據,尤其是具有多個關鍵字的大型文檔。
新款表可以解決當前存儲大型文檔的問題。通常情況下,大型文檔被分為多個小片段進行存儲。這會導致查詢時需要合并這些分段,從而降低了性能。新款表通過在文檔中創建虛擬列,將單個文檔轉換為單個數據行,從而徹底減少了數據合并的需求。此外,新款表允許使用全文索引來加速對文檔的搜索。
CREATE TABLE `documents` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` json NOT NULL, `document` longtext GENERATED ALWAYS AS (json_unquote(json_extract(`content`, _utf8mb4'$."document"'))) VIRTUAL, `title` varchar(255) GENERATED ALWAYS AS (json_unquote(json_extract(`content`, _utf8mb4'$."title"'))) VIRTUAL, FULLTEXT KEY `idx_document` (`document`), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
上面是一個創建新款表的示例SQL語句。在這個例子中,我們創建了一個名為“documents”的表。這個表有三個列:id,content和document。
id是自增長的主鍵,content是JSON格式的數據。document是一個虛擬列,用于提取content列的“document”屬性。通過在document列上創建全文索引,我們可以實現對所有大型文檔的快速搜索。此外,表中還定義了一個名為“title”的虛擬列,用于提取content列的“title”屬性。
新款表是MySQL 8.0的一個重要更新,它可以大大提高對大型文檔的存儲和查詢性能。如果你的應用程序需要存儲大量的JSON文檔,并且需要對它們進行快速搜索,那么新款表應該是你的首選。
上一篇css做背景圖