返回顶部
首页 > 资讯 > 数据库 >Mysql在LONGTEXT字段上作like操作的消耗是怎样的
  • 718
分享到

Mysql在LONGTEXT字段上作like操作的消耗是怎样的

2024-04-02 19:04:59 718人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关Mysql在LONGTEXT字段上作like操作的消耗是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。# mysql 51

这篇文章将为大家详细讲解有关Mysql在LONGTEXT字段上作like操作的消耗是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

# mysql 5140 @ RHEL 5u4 X86_64 

# 先提供一些表的信息:
===================================================================
root@127.0.0.1 : trac_apsara 17:18:46> show create table wiki  G
*************************** 1. row ***************************
      Table: wiki
Create Table: CREATE TABLE `wiki` (
 `name` longtext COLLATE utf8_bin,
 `version` int(11) DEFAULT NULL,
 `time` bigint(20) DEFAULT NULL,
 `author` longtext COLLATE utf8_bin,
 `ipnr` longtext COLLATE utf8_bin,
 `text` longtext COLLATE utf8_bin,
 `comment` longtext COLLATE utf8_bin,
 `readonly` int(11) DEFAULT NULL,
 KEY `wiki_time_idx` (`time`),
 KEY `name_ver_ind` (`name`(200),`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)


root@127.0.0.1 : trac_apsara 17:19:04> select count(*) from wiki;
+----------+
| count(*) |
+----------+
|    76514 |
+----------+
1 row in set (0.03 sec)

root@127.0.0.1 : trac_apsara 17:19:08> select count(distinct name ) from wiki;
+-----------------------+
| count(distinct name ) |
+-----------------------+
|                 40369 |
+-----------------------+
1 row in set (0.59 sec)

root@127.0.0.1 : trac_apsara 17:19:21> show variables like 'innodb_buffer%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| innodb_buffer_pool_size | 1073741824 |
+-------------------------+------------+
1 row in set (0.00 sec)


root@127.0.0.1 : trac_apsara 17:21:08> show table status like 'wiki' G
*************************** 1. row ***************************
          Name: wiki
        Engine: InnoDB
       Version: 10
    Row_fORMat: Compact
          Rows: 336009
Avg_row_length: 4458
   Data_length: 1498120192
Max_data_length: 0
  Index_length: 10551296
     Data_free: 7340032
Auto_increment: NULL
   Create_time: 2010-09-29 14:49:20
   Update_time: NULL
    Check_time: NULL
     Collation: utf8_bin
      Checksum: NULL
Create_options:
       Comment:
1 row in set (0.01 sec)
===================================================================

#下面我们来看一下sql和数据:

## SQL1 :  
SELECT w1.name,w1.time,w1.author,w1.text
FROM wiki w1,
(SELECT name,max(version) AS ver FROM wiki GROUP BY name) w2
 WHERE w1.version = w2.ver AND w1.name = w2.name
  AND (w1.name LIKE '%rpcRequestPtr%'  ESCAPE '/'
      OR w1.author LIKE '%RpcRequestPtr%'  ESCAPE '/'
      OR w1.text LIKE '%RpcRequestPtr%'   ESCAPE '/'
      );

## SQL2 :  
SELECT w1.name,w1.time,w1.author,w1.text
FROM wiki w1,
(SELECT name,max(version) AS ver FROM wiki GROUP BY name) w2
 WHERE w1.version = w2.ver AND w1.name = w2.name
  AND (w1.name LIKE '%RpcRequestPtr%'  ESCAPE '/'
      OR w1.author LIKE '%RpcRequestPtr%'  ESCAPE '/'
      ###### OR w1.text LIKE '%RpcRequestPtr%'   ESCAPE '/'
      );
     
两个SQL仅一个WHERE条件之差。


root@127.0.0.1 : trac_apsara 17:24:08> explain SELECT w1.name,w1.time,w1.author,w1.text
   ->  FROM wiki w1,
   ->  (SELECT name,max(version) AS ver FROM wiki GROUP BY name) w2
   ->   WHERE w1.version = w2.ver AND w1.name = w2.name
   ->    AND (w1.name LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->        OR w1.author LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->        OR w1.text LIKE '%RpcRequestPtr%'   ESCAPE '/'
   ->        );
+----+-------------+------------+------+---------------+--------------+---------+----------------+--------+---------------------------------+
| id | select_type | table      | type | possible_keys | key          | key_len | ref            | rows   | Extra                           |
+----+-------------+------------+------+---------------+--------------+---------+----------------+--------+---------------------------------+
|  1 | PRIMARY     || ALL  | NULL          | NULL         | NULL    | NULL           |  40369 |                                 |
|  1 | PRIMARY     | w1         | ref  | name_ver_ind  | name_ver_ind | 608     | w2.name,w2.ver |      3 | Using where                     |
|  2 | DERIVED     | wiki       | ALL  | NULL          | NULL         | NULL    | NULL           | 445724 | Using temporary; Using filesort |
+----+-------------+------------+------+---------------+--------------+---------+----------------+--------+---------------------------------+
3 rows in set (1.04 sec)

root@127.0.0.1 : trac_apsara 17:22:26> explain SELECT w1.name,w1.time,w1.author,w1.text
   ->  FROM wiki w1,
   ->  (SELECT name,max(version) AS ver FROM wiki GROUP BY name) w2
   ->   WHERE w1.version = w2.ver AND w1.name = w2.name
   ->    AND (w1.name LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->        OR w1.author LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->      #  OR w1.text LIKE '%RpcRequestPtr%'   ESCAPE '/'
   ->        );
+----+-------------+------------+------+---------------+--------------+---------+----------------+--------+---------------------------------+
| id | select_type | table      | type | possible_keys | key          | key_len | ref            | rows   | Extra                           |
+----+-------------+------------+------+---------------+--------------+---------+----------------+--------+---------------------------------+
|  1 | PRIMARY     || ALL  | NULL          | NULL         | NULL    | NULL           |  40369 |                                 |
|  1 | PRIMARY     | w1         | ref  | name_ver_ind  | name_ver_ind | 608     | w2.name,w2.ver |      3 | Using where                     |
|  2 | DERIVED     | wiki       | ALL  | NULL          | NULL         | NULL    | NULL           | 445724 | Using temporary; Using filesort |
+----+-------------+------------+------+---------------+--------------+---------+----------------+--------+---------------------------------+
3 rows in set (1.03 sec)

### 从执行计划来看,两个SQL一模一样; 处理的行数也是一样的;


root@127.0.0.1 : trac_apsara 17:25:39> reset query cache ;
Query OK, 0 rows affected (0.00 sec)

root@127.0.0.1 : trac_apsara 17:25:52> SELECT w1.name,w1.time,w1.author,w1.text
   ->  FROM wiki w1,
   ->  (SELECT name,max(version) AS ver FROM wiki GROUP BY name) w2
   ->   WHERE w1.version = w2.ver AND w1.name = w2.name
   ->    AND (w1.name LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->        OR w1.author LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->      #  OR w1.text LIKE '%RpcRequestPtr%'   ESCAPE '/'
   ->        );

Empty set (1.31 sec)

root@127.0.0.1 : trac_apsara 17:26:12> reset query cache ;
Query OK, 0 rows affected (0.00 sec)

root@127.0.0.1 : trac_apsara 17:26:15> SELECT w1.name,w1.time,w1.author,w1.text
   ->  FROM wiki w1,
   ->  (SELECT name,max(version) AS ver FROM wiki GROUP BY name) w2
   ->   WHERE w1.version = w2.ver AND w1.name = w2.name
   ->    AND (w1.name LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->        OR w1.author LIKE '%RpcRequestPtr%'  ESCAPE '/'
   ->        OR w1.text LIKE '%RpcRequestPtr%'   ESCAPE '/'
   ->        );
13 rows in set (3.50 sec)

## 从执行时间来看,
## SQL1 : 3.50 sec ,  SQL2: 1.31 sec

## 从这里我们基本可以判断出来,MYSQL 用了 2.19 sec 在内存中处理40369次TEXT字段的LIKE模糊查询操作;
## 而从WIKI表INDEX查询40369次,却只用了1.31秒(可能更少),当然数据已经在CACHE里。
## 我们以后做SQL可要注意了。不光是读硬盘会消耗时间,在内存中的LIKE模糊查询操作,也很费时间;

关于Mysql在LONGTEXT字段上作like操作的消耗是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql在LONGTEXT字段上作like操作的消耗是怎样的

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

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

猜你喜欢
  • Mysql在LONGTEXT字段上作like操作的消耗是怎样的
    这篇文章将为大家详细讲解有关Mysql在LONGTEXT字段上作like操作的消耗是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。# Mysql 51...
    99+
    2024-04-02
  • MySQL中json字段的操作方法
       MySQL5.7.8中引入了json字段,这种类型的字段使用的频率比较低,但是在实际操作中,有些业务仍然在用,我们以此为例,介绍下json字段的操作方法: 还是从例子看起: mysql&...
    99+
    2022-05-31
    MySQL json MySQL json字段
  • Mysql 获取表的comment 字段操作
    我就废话不多说了,大家还是直接看代码吧~ -- 查看获取表内字段注释: show full columns from tablename; -- 或是 show full fields from tablenam...
    99+
    2022-05-25
    Mysql comment字段
  • MySQL DDL操作实践是怎样的
    本篇文章给大家分享的是有关MySQL DDL操作实践是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。根据网上的DDL 树状图,自己cop...
    99+
    2024-04-02
  • PHP+MYSQL的分页是怎样操作的
    本篇文章为大家展示了PHP+MYSQL的分页是怎样操作的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。寫php是簡單的事,但是分頁可困擾小弟好一陣子°因為手邊的書好...
    99+
    2024-04-02
  • mysql多字段内容并到单字段中的操作
    set @rn=0; SELECT @rn:=@rn+1 序号, ryxm `人员姓名`, cylb `成员类别`, gzdw `工作单位`, zc `职称`, GRO...
    99+
    2016-02-25
    mysql多字段内容并到单字段中的操作
  • 关于mysql的相关操作是怎样的
    这篇文章将为大家详细讲解有关关于mysql的相关操作是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、Mysql用户密码修改mysql密码修改有多种...
    99+
    2024-04-02
  • mysql类似merge的操作是怎么样的
    今天就跟大家聊聊有关mysql类似merge的操作是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。mysql> truncate `2...
    99+
    2024-04-02
  • Mysql中关于表的操作是怎样的
    Mysql中关于表的操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。创建数据库  createdatabase数据库...
    99+
    2024-04-02
  • awk的操作是怎么样的
    本篇文章给大家分享的是有关awk的操作是怎么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。awk是一种用于处理文本、模式匹配的编程语言。与sed和grep,俗称Linux下...
    99+
    2023-06-05
  • 数据库MySQL的简单操作是怎样的
    数据库MySQL的简单操作是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。以MySQL为例。一、下载,安装,mysql和navica...
    99+
    2024-04-02
  • mysql数据表的基本操作之表结构操作,字段操作实例分析
    本文实例讲述了mysql数据表的基本操作之表结构操作,字段操作。分享给大家供大家参考,具体如下: 本节介绍: 表结构操作 创建数据表、 查看数据表和查看字段、 修改数据表结构 删除数据表 字段操作...
    99+
    2022-05-11
    mysql 数据表 表结构 字段
  • Mybatis-Plus读写Mysql的Json字段的操作代码
    目录前置条件一、新建mysql表增加json字段二、pojo类三、测试类前置条件 确保mysql的版本是5.7+ 一、新建mysql表增加json字段 二、pojo类 packag...
    99+
    2024-04-02
  • Python作用域的操作步骤是怎样的
    本篇文章给大家分享的是有关Python作用域的操作步骤是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。局部,上层,模块,内置python编辑器按照变量定义的位置来确定作用...
    99+
    2023-06-17
  • mysql数据库表增添字段,删除字段,修改字段的排列等操作
    目录一、mysql修改表名二、mysql修改数据的字段类型三、mysql修改字段名四、mysql添加字段1、添加没有约束性的字段2、添加一个有约束性的字段3、在表的第一列添加一个字段4、在数据表中指定列之后添加一个字段五...
    99+
    2022-07-26
    mysql数据库表增添字段 mysql数据库删除字段 mysql数据库修改字段
  • MySQL中datetime时间字段的四舍五入操作
    目录前言1、背景2、模拟测试3、结论总结前言 如果不是踩到坑,我估计到现在还不知道时间字段会四舍五入。 1、背景 通过 Java 代码获取当日最大时间,然后存入数据库,数据库表字...
    99+
    2024-04-02
  • Java SE 7文件操作中的路径操作是怎样的
    Java SE 7文件操作中的路径操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java SE 7中对Path类的操作主要有两种:对路径的操作和对文...
    99+
    2023-06-17
  • Python或C API数字在操作处理时的步骤是怎么样的
    今天就跟大家聊聊有关Python或C API数字在操作处理时的步骤是怎么样的 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python/C API数字与字符串在进行相关处理时Pyt...
    99+
    2023-06-17
  • MYSQL修改后新版本的操作类是怎样的
    MYSQL修改后新版本的操作类是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 MYSQL...
    99+
    2024-04-02
  • Oracle Spatial基本操作是怎样的
    Oracle Spatial基本操作是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Spatial主要通过元数据表、空间数据字段(即sd...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作