返回顶部
首页 > 资讯 > 数据库 >MySQL中怎么使用Generated Columns + index代替函数索引
  • 400
分享到

MySQL中怎么使用Generated Columns + index代替函数索引

2024-04-02 19:04:59 400人浏览 独家记忆
摘要

这篇文章主要讲解了“Mysql中怎么使用Generated Columns + index代替函数索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysq

这篇文章主要讲解了“Mysql中怎么使用Generated Columns + index代替函数索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中怎么使用Generated Columns + index代替函数索引”吧!

最近有一个项目遇到性能问题,我这里把优化的方法分享出来(这个方案并非谁独创,而是mysql 官方为实现函数索引的替代方法)。

问题是这样的:我们需要从一个JSON 字段中取出相应的项作为 where 子句的条件,如下:

CREATE TABLE `xxxxxx` (
  `id` varchar(96) DEFAULT NULL,
  `gid` varchar(96) DEFAULT NULL,
  `user_id` varchar(900) DEFAULT NULL,
  `order_no` varchar(96) DEFAULT NULL,
  `request_time` varchar(96) DEFAULT NULL,
  `code` varchar(96) DEFAULT NULL,
  `msg` varchar(96) DEFAULT NULL,
  `request_conetent` text,
  `request_response` text,
  `product_code` varchar(600) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
##SQL如下:
select id from table_name where json_extract(`request_conetent`,'$.vclN')='xxxxx';
+----+-------------+----------------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table          | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+----------------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | xxxxxx         | NULL       | ALL  | NULL          | NULL | NULL    | NULL |   85 |   100.00 | Using where |
+----+-------------+----------------+------------+------+---------------+------+---------+------+------+----------+-------------+

大家都知道MYSQL不支持函数索引,那如何优化呢?

MYSQL虽然不支持函数索引,但有一个替代方法:Generated Columns + index 代替函数索引

###在 request_record 表中添加一个计算列,并在该列上创建函数索引

alter table table_name add column carno varchar(100) generated always as (json_extract(`request_conetent`,'$.vclN')) VIRTUAL,add key idx_carno(carno);

#表结构如下:

CREATE TABLE `xxxxxx` (

  `id` varchar(96) DEFAULT NULL,

  `gid` varchar(96) DEFAULT NULL,

  `user_id` varchar(900) DEFAULT NULL,

  `order_no` varchar(96) DEFAULT NULL,

  `request_time` varchar(96) DEFAULT NULL,

  `code` varchar(96) DEFAULT NULL,

  `msg` varchar(96) DEFAULT NULL,

  `request_conetent` text,

  `request_response` text,

  `product_code` varchar(600) DEFAULT NULL,

  `carno` varchar(100) GENERATED ALWAYS AS (json_extract(`request_conetent`,'$.vclN')) VIRTUAL,

  KEY `idx_carno` (`carno`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

# 用 新增加的计算列(carno)查询

mysql> explain select id from request_record where carno='xxxxxx';                                    

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

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

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

|  1 | SIMPLE      | xxxxxxx        | NULL       | ref  | idx_carno     | idx_carno | 303     | const |    1 |   100.00 | NULL  |

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

从执行计划里可以看出,已经走索引了

感谢各位的阅读,以上就是“MySQL中怎么使用Generated Columns + index代替函数索引”的内容了,经过本文的学习后,相信大家对MySQL中怎么使用Generated Columns + index代替函数索引这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中怎么使用Generated Columns + index代替函数索引

本文链接: https://lsjlt.com/news/63466.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL中怎么使用Generated Columns + index代替函数索引
    这篇文章主要讲解了“MySQL中怎么使用Generated Columns + index代替函数索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQ...
    99+
    2024-04-02
  • 怎么使用PostgreSQL 12中的generated columns
    这篇文章主要介绍“怎么使用PostgreSQL 12中的generated columns”,在日常操作中,相信很多人在怎么使用PostgreSQL 12中的generated columns问题上存在疑惑...
    99+
    2024-04-02
  • MySQL中的函数索引(Generated Column)及一次SQL优化
    MySQL 中是没有 Oracle 的函数索引功能的,把 MySQL 的 Generated Column 称为“函数索引”并不准确,但可以和函数索引达到同样的效果,也有人把这个特性称为“衍生列”。 Generated Colum...
    99+
    2016-08-19
    MySQL中的函数索引(Generated Column)及一次SQL优化
  • MySQL存储的GENERATED COLUMNS如何与内置函数一起使用?
    可以通过一个示例进行说明,在该示例中,我们在名为“employee_data_stored”的表中创建一个存储的生成列。我们知道,存储生成列可以通过使用关键字“stored”来生成。示例mysql> Create table empl...
    99+
    2023-10-22
  • Mysql使用全文索引(FullText index)的实例代码
    目录什么是全文索引注意创建全文索引使用全文索引自然语言搜索BOOLEAN MODE总结什么是全文索引 全文索引,通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题....
    99+
    2024-04-02
  • 如何在 MySQL 中使用 IFNULL() 函数代替 COALESCE() 函数?
    我们知道,如果第一个参数不为 NULL,IFNULL() 函数将返回第一个参数,否则返回第二个参数。另一方面,COALESCE() 函数将返回第一个非 NULL 参数。实际上,如果参数数量只有两个,MySQL 中的 IFNULL() 和 C...
    99+
    2023-10-22
  • MySQL中怎么使用索引
    今天就跟大家聊聊有关MySQL中怎么使用索引,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  MySQL何时使用索引  对一个键码使用>,&g...
    99+
    2024-04-02
  • 怎么在Mysql中使用索引
    本篇文章为大家展示了怎么在Mysql中使用索引,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。为何要有索引一般的应用系统,读写比例在10:1左右,而且插入操作和一般的...
    99+
    2024-04-02
  • MySQL5.7中的函数索引怎么用
    本篇文章给大家分享的是有关MySQL5.7中的函数索引怎么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 &nb...
    99+
    2024-04-02
  • MySQL索引怎么使用
    小编给大家分享一下MySQL索引怎么使用,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!MySQL索引的使用实例一. 慢查询日志二. 查询分析器——explain三. 索引的基本使用四. 复合索...
    99+
    2024-04-02
  • MySQL中怎么使用索引优化
    本篇内容主要讲解“MySQL中怎么使用索引优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中怎么使用索引优化”吧!使用索引优化索引是数据库优化最常用也是最重要的手段之一,通过索引通常...
    99+
    2023-07-05
  • vue中v-for的索引index在html中怎么用
    这篇文章主要为大家展示了“vue中v-for的索引index在html中怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中v-for的索引index在...
    99+
    2024-04-02
  • oracle函数索引怎么创建和使用
    创建一个Oracle函数索引的语法如下: CREATE INDEX index_name ON table_name (functi...
    99+
    2024-03-13
    oracle
  • mysql怎么使用索引查询数据
    要使用索引查询数据,可以按照以下步骤进行: 1、创建索引:首先,在需要加索引的列上创建索引。你可以通过使用CREATE INDEX语...
    99+
    2024-04-09
    mysql
  • mysql中怎么监控索引使用率
    这篇文章将为大家详细讲解有关mysql中怎么监控索引使用率,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。索引使用率监控简析 show status...
    99+
    2024-04-02
  • mysql中groupby怎么用索引
    在 mysql 中使用 group by 时,索引的使用可以极大地提高性能,前提是:确保索引列与 group by 子句中的列匹配。创建复合索引以提高分组涉及多个列时的性能。使用覆盖索引...
    99+
    2024-05-09
    mysql 聚合函数
  • PHP替换函数怎么使用
    本篇内容介绍了“PHP替换函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、PHP replace()函数PHP replace...
    99+
    2023-07-06
  • PHP中怎么使用preg_replace()函数替换数组
    这篇文章将为大家详细讲解有关PHP中怎么使用preg_replace()函数替换数组,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP语言的功能非常强大,主要就是靠它强大的函数来作支撑。我...
    99+
    2023-06-17
  • MySQL联合索引怎么使用
    MySQL联合索引是指在一个表中同时使用多个列作为索引的方式,可以提高查询效率。使用方法如下: 创建联合索引: ALTER TA...
    99+
    2023-10-27
    MySQL
  • mysql怎么使用索引查询
    索引在 mysql 中用于快速查找数据,通过创建索引可以显著提高查询性能。可以通过在 create table 或 alter table 语句中使用 index 或 key 子句来创建...
    99+
    2024-05-30
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作