CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name[index_type]ON tbl_name (key_part,...)[index_option][algorithm_option | lock_option] ...key_part: {col_name [(length)] | (expr)} [ASC | DESC]index_option: {KEY_BLOCK_SIZE [=] value| index_type| WITH PARSER parser_name| COMMENT 'string'| {VISIBLE | INVISIBLE}| ENGINE_ATTRIBUTE [=] 'string'| SECONDARY_ENGINE_ATTRIBUTE [=] 'string'}index_type:USING {BTREE | HASH}algorithm_option:ALGORITHM [=] {DEFAULT | INPLACE | COPY}lock_option:LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}
CREATE INDEX part_of_name ON customer (name(10));
CREATE TABLE t1 (col1 VARCHAR(10),col2 VARCHAR(20),INDEX (col1, col2(10)));
CREATE TABLE t1 (col1 INT, col2 INT, INDEX func_index ((ABS(col1))));CREATE INDEX idx1 ON t1 ((col1 + col2));CREATE INDEX idx2 ON t1 ((col1 + col2), (col1 - col2), col1);ALTER TABLE t1 ADD INDEX ((col1 * 40) DESC);
INDEX ((col1 + col2), (col3 - col4))
INDEX (col1 + col2, col3 - col4)
INDEX ((col1), (col2))
INDEX (col1, col2)
CREATE TABLE tbl (col1 LONGTEXT,INDEX idx1 ((SUBSTRING(col1, 1, 10))));SELECT * FROM tbl WHERE SUBSTRING(col1, 1, 9) = '123456789';SELECT * FROM tbl WHERE SUBSTRING(col1, 1, 10) = '1234567890';
CREATE TABLE employees (data JSON,INDEX ((data->>'$.name')));
CREATE TABLE employees (data JSON,INDEX ((CAST(data->>'$.name' AS CHAR(30)))));
SELECT * FROM employees WHERE data->>'$.name' = 'James';
CREATE TABLE employees (data JSON,INDEX idx ((CAST(data->>"$.name" AS CHAR(30)) COLLATE utf8mb4_bin)));INSERT INTO employees VALUES('{ "name": "james", "salary": 9000 }'),('{ "name": "James", "salary": 10000 }'),('{ "name": "Mary", "salary": 12000 }'),('{ "name": "Peter", "salary": 8000 }');SELECT * FROM employees WHERE data->>'$.name' = 'James';
+------------------------------------+| data |+------------------------------------+| {"name": "James", "salary": 10000} |+------------------------------------+
CREATE TABLE employees (data JSON,INDEX idx ((CAST(data->>"$.name" AS CHAR(30)))));INSERT INTO employees VALUES('{ "name": "james", "salary": 9000 }'),('{ "name": "James", "salary": 10000 }'),('{ "name": "Mary", "salary": 12000 }'),('{ "name": "Peter", "salary": 8000 }');SELECT * FROM employees WHERE CAST(data->>'$.name' AS CHAR(30)) = 'James';
+------------------------------------+| data |+------------------------------------+| {"name": "james", "salary": 9000} || {"name": "James", "salary": 10000} |+------------------------------------+
mysql> CREATE TABLE employees (data JSON,generated_col VARCHAR(30) AS (CAST(data->>'$.name' AS CHAR(30))));Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> INSERT INTO employees (data)VALUES ('{"name": "james"}'), ('{"name": "James"}');Query OK, 2 rows affected, 1 warning (0.01 sec)Records: 2 Duplicates: 0 Warnings: 1mysql> SELECT * FROM employees WHERE data->>'$.name' = 'James';+-------------------+---------------+| data | generated_col |+-------------------+---------------+| {"name": "James"} | James |+-------------------+---------------+1 row in set (0.00 sec)mysql> ALTER TABLE employees ADD INDEX idx (generated_col);Query OK, 0 rows affected, 1 warning (0.03 sec)Records: 0 Duplicates: 0 Warnings: 1mysql> SELECT * FROM employees WHERE data->>'$.name' = 'James';+-------------------+---------------+| data | generated_col |+-------------------+---------------+| {"name": "james"} | james || {"name": "James"} | James |+-------------------+---------------+2 rows in set (0.01 sec)
文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




