[英]How to create index on json array type in mysql5.7
現在我使用 SQL 腳本,如SELECT * FROM user WHERE JSON_CONTAINS(users, '[1]');
但它會掃描全表,效率低下。 所以我想在users
列上創建索引。
例如,我有一個名為users
的列,數據看起來像[1,2,3,4]
。 請告訴我如何在 JSON 數組類型(生成虛擬列)上設置索引。 我已經閱讀了 MySQL 網站上的文檔,他們都談到了使用JSON_EXTRACT()
函數在 JSON 對象類型中建立索引。
現在可以使用 MySQL 8+
下面是一個例子:
CREATE TABLE customers (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
custinfo JSON
);
ALTER TABLE customers ADD INDEX comp(id, modified,
(CAST(custinfo->'$.zipcode' AS UNSIGNED ARRAY)) );
以這種方式使用它:
SELECT * FROM customers
-> WHERE JSON_CONTAINS(custinfo->'$.zipcode', CAST('[94507,94582]' AS JSON));
更多信息: https : //dev.mysql.com/doc/refman/8.0/en/create-index.html
你不能,至少是你想要的方式。 在JSON 數據類型中,我們可以閱讀:
JSON
列與其他二進制類型的列一樣,不直接編入索引; 相反,您可以在從JSON
列中提取標量值的生成列上創建索引。 有關詳細示例,請參閱索引生成的列以提供 JSON 列索引。
因此,隨着限制而來的是解決方法;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.