溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL5.7中的函數索引怎么用

發布時間:2021-11-16 09:25:46 來源:億速云 閱讀:476 作者:柒染 欄目:MySQL數據庫

本篇文章給大家分享的是有關MySQL5.7中的函數索引怎么用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

 在MySQL5.7之前的版本中,函數索引是無法用到索引的,也不支持虛擬列,下邊的SQL執行時候回進行全表掃描:
 select * from t1 where mod(mode_id,8)=1
 MySQL5.7支持虛擬列,并且可以使用函數索引。
 確定數據庫版本:

  1. mysql> select version();

  2. +------------+

  3. | version() |

  4. +------------+

  5. | 5.7.18-log |

  6. +------------+

  查看表結構:

  1. mysql> show create table t_func_mod \G

  2. *************************** 1. row ***************************

  3.        Table: t_func_mod

  4. Create Table: CREATE TABLE `t_func_mod` (

  5.   `id` int(11) NOT NULL,

  6.   `mod_id` int(11) GENERATED ALWAYS AS ((`id` % 8)) VIRTUAL,

  7.   PRIMARY KEY (`id`),

  8.   KEY `idx_mod_id` (`mod_id`)

  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8

  插入測試數據:

  1. mysql> insert into t_func_mod values(1,default);

  2. Query OK, 1 row affected (0.08 sec)


  3. mysql> insert into t_func_mod values(2,default);

  4. Query OK, 1 row affected (0.06 sec)


  5. mysql> insert into t_func_mod values(3,default);

  6. Query OK, 1 row affected (0.01 sec)


  7. mysql> insert into t_func_mod values(4,default);

  8. Query OK, 1 row affected (0.01 sec)


  9. mysql> insert into t_func_mod values(5,default);

  10. Query OK, 1 row affected (0.04 sec)


  11. mysql> insert into t_func_mod values(6,default);

  12. Query OK, 1 row affected (0.00 sec)


  13. mysql> insert into t_func_mod values(7,default);

  14. Query OK, 1 row affected (0.00 sec)


  15. mysql> insert into t_func_mod values(8,default);

  16. Query OK, 1 row affected (0.00 sec)

  注意:插入數據時候,虛擬列要使用default,否則會報錯。
 查看測試表數據:

  1. mysql> select * from t_func_mod;

    +----+--------+

  2. | id | mod_id |

    +----+--------+

  3. | 8 | 0 |

  4. | 1 | 1 |

  5. | 2 | 2 |

  6. | 3 | 3 |

  7. | 4 | 4 |

  8. | 5 | 5 |

  9. | 6 | 6 |

  10. | 7 | 7 |

    +----+--------+

通過explain查看執行計劃,已經使用到了索引:

  1. mysql> explain select * from t_func_mod where mod_id=5;

    ----+-------------+------------+------------+------+---------------+------------+---------+-------+------+----------+-------------+

  2. | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

    +----+-------------+------------+------------+------+---------------+------------+---------+-------+------+----------+-------------+

  3. | 1 | SIMPLE | t_func_mod | NULL | ref | idx_mod_id | idx_mod_id | 5 | const | 1 | 100.00 | Using index |


以上就是MySQL5.7中的函數索引怎么用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女