美文网首页
functional index

functional index

作者: wwq2020 | 来源:发表于2022-01-12 16:42 被阅读0次

    准备

     CREATE TABLE `user` (
      `id` bigint NOT NULL AUTO_INCREMENT,
      `name` varchar(100) NOT NULL DEFAULT '',
      `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      Key `created_at` (`created_at`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
    insert into user(name,created_at) values("a","2006-01-02 16:04:05");
    insert into user(name,created_at) values("b","2006-02-02 16:04:05");
    

    背景

    where中条件使用了函数的话是使用不了索引的,如

    image.png

    解决方式

    mysql 8.0后有新增了一个functional index

    ALTER TABLE user ADD INDEX((month(created_at)));
    
    image.png

    如果是5.7的话,可以使用虚拟列mysql虚拟列 - 简书 (jianshu.com)

    functional index其实就是一个隐藏的虚拟生成的列

    相关文章

      网友评论

          本文标题:functional index

          本文链接:https://www.haomeiwen.com/subject/yqiwcrtx.html