久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

共計(jì) 5943 個(gè)字符,預(yù)計(jì)需要花費(fèi) 15 分鐘才能閱讀完成。

這篇文章將為大家詳細(xì)講解有關(guān) Mysql 在 LONGTEXT 字段上作 like 操作的消耗是怎樣的,文章內(nèi)容質(zhì)量較高,因此丸趣 TV 小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

# 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)
===================================================================

# 下面我們來(lái)看一下 SQL 和數(shù)據(jù):

## 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 /
      );
     
兩個(gè) SQL 僅一個(gè) 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)

### 從執(zhí)行計(jì)劃來(lái)看,兩個(gè) SQL 一模一樣;處理的行數(shù)也是一樣的;

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)

## 從執(zhí)行時(shí)間來(lái)看,
## SQL1 : 3.50 sec ,  SQL2: 1.31 sec

## 從這里我們基本可以判斷出來(lái),MYSQL 用了 2.19 sec 在內(nèi)存中處理 40369 次 TEXT 字段的 LIKE 模糊查詢(xún)操作;
## 而從 WIKI 表 INDEX 查詢(xún) 40369 次,卻只用了 1.31 秒(可能更少),當(dāng)然數(shù)據(jù)已經(jīng)在 CACHE 里。
## 我們以后做 SQL 可要注意了。不光是讀硬盤(pán)會(huì)消耗時(shí)間,在內(nèi)存中的 LIKE 模糊查詢(xún)操作,也很費(fèi)時(shí)間;

關(guān)于 Mysql 在 LONGTEXT 字段上作 like 操作的消耗是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-19發(fā)表,共計(jì)5943字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 肇庆市| 惠州市| 昭苏县| 浑源县| 安丘市| 连云港市| 红安县| 察雅县| 鄂州市| 武定县| 桃源县| 镇赉县| 环江| 石棉县| 铜川市| 高雄市| 乳山市| 镇坪县| 崇义县| 吉木乃县| 涟水县| 崇左市| 绥阳县| 格尔木市| 丹东市| 青阳县| 柳江县| 汝南县| 甘肃省| 鱼台县| 正镶白旗| 二连浩特市| 西乡县| 周至县| 梨树县| 麻江县| 舒城县| 湖州市| 阜阳市| 密云县| 钟山县|