`

mysql模糊查询

 
阅读更多
利用mysql这种关系型数据库来做索引,的确有些勉强了,也只能看情况来说了,有些简单的功能还是可以考虑的。

  对于模糊查询语句,最不利的情况是要like '%key%'这样的查询,但是如果是like 'key%'这种情况,那么mysql的索引在些查询方式上还是可以优化的。

  网上常见的是ASCII的英文字符优化,如下:

  view plain select corp_code, corp_corp from tb_Z_Corp where corp_code like '0008%';举个例子来看看问题的来源吧:

  先看一下要试验表的创建语句和结构,这是一个只包含股票代码和股票名称的数据表,主键为股票代码:

  view plain mysql> show create table tb_Z_Corp;+——+——+ | Table     | Create Table                      | +——+——+ | tb_Z_Corp | CREATE TABLE `tb_Z_Corp` (`corp_code` char(10) NOT NULL,`corp_corp` varchar(60) NOT NULL,PRIMARY KEY  (`corp_code`),KEY `idx_Z_Corp_corp_corp` (`corp_corp`)) ENGINE=MyISAM DEFAULT CHARSET=utf8            | +——+——+

  mysql> desc tb_Z_Corp;+——+——+——+——+——+——+ | Field         | Type        | Null | Key | Default | Extra | +——+——+——+——+——+——+ | corp_code     | char(10)    | NO   | PRI |         |       | | corp_corp     | varchar(60) | NO   | MUL |         |       | +——+——+——+——+——+——+表里面的数据举例如下(股票代码和股票名称):

  view plain +——+——+ | corp_code | corp_corp    | +——+——+ | 000800    | 一汽轿车     | | 000801    | 四川九洲     | | 000802    | 北京旅游     | | 000803    | 金宇车城     | | 000805    | *ST炎黄      | | 000806    | 银河科技     | | 000807    | 云铝股份     | | 000809    | 中汇医药     |看一下要待优化的语句(一个英文、一个中文的):

  view plain select corp_code, corp_corp from tb_Z_Corp where corp_code like '0008%';select corp_code, corp_corp from tb_Z_Corp where corp_corp like '江%';对于第一个待优化的SQL语句来说,比较简单,很多地方都介绍过怎样优化:

  view plain select corp_code, corp_corp from tb_Z_Corp where corp_code >= '0008' and corp_code < '0009';而对于第二个是中文字符,马上想到是加一个最大编码的汉字,这里数据库存储的是UTF-8格式存储,而汉字的编码为3字节,所以按其最大编码的规则应该是:Unicode编码是从U+0800到U+FFFF先标记一下这16位:“zzzzyyyy yyxxxxxx”;然后把这16位对应到UTF-8的编码:“1110zzzz 10yyyyyy 10xxxxxx”。

  所以最大的3个字节的编码为“11101111 10111111 10111111”,也就是十六进制的“EFBFBF”。

  在MySQL中,用x'EFBFBF'表明这里面是用16进制编码的字符串,所以我们优化后的语句应该是这样的:

  view plain select corp_code, corp_corp from tb_Z_Corp where corp_corp >= '江' and corp_corp < CONCAT('江', x'EFBFBF');这样就达到了不用like语句比较表中的每一条记录,而直接使用索引快速检索。看,结果出来了:

  view plain +——+——+ | corp_code | corp_corp    | +——+——+ | 600750    | 江中药业     | | 002226    | 江南化工     | | 601199    | 江南水务     | | 000519    | 江南红箭     | | 600527    | 江南高纤     | | 002061    | 江山化工     | | 600389    | 江山股份     | | 600212    | 江泉实业     | | 002484    | 江海股份     | | 000816    | 江淮动力     | | 600418    | 江淮汽车     | | 002176    | 江特电机     |



查询不包含关键词的语句
select * from tableA where tab not like '%abc%'
分享到:
评论

相关推荐

    浅谈MySQL模糊查询中通配符的转义

    sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就...

    MySQL模糊查询语法

    MySQL 模糊查询语法 MySQL 提供了两种模糊查询语法:标准的 SQL 模式匹配和基于 Unix 实用程序的扩展正则表达式模式匹配。 SQL 模式匹配 在 MySQL 中,SQL 模式匹配允许使用“_”匹配任何单个字符,而“%”匹配...

    Mysql 时间模糊查询

    ### MySQL 时间模糊查询详解 #### 一、概述 在数据库操作中,经常需要对时间进行模糊查询以满足特定业务需求。MySQL提供了多种方法来进行时间模糊查询,这些方法各有特点,适用于不同的场景。本文将详细介绍几种...

    mysql模糊查询.pdf

    【MySQL 模糊查询】 在 MySQL 数据库中,模糊查询是一种强大的检索技术,它允许用户使用通配符来搜索不完全匹配的记录。这在处理大量数据时非常有用,特别是当你不确定确切的查询条件时。以下是一些关于 MySQL 模糊...

    自写php+MySQL模糊查询

    在这个场景中,"自写php+MySQL模糊查询" 是一个新手尝试实现的功能,它允许用户输入关键词,然后在数据库中进行不精确匹配,返回与关键词相关的记录。这样的功能可以极大地提高用户在网站上的搜索体验。以下是对这个...

    mysql模糊查询.docx

    【MySQL模糊查询】 在数据库操作中,模糊查询是一种常见的搜索技术,它允许用户使用通配符来匹配不完全知道的字符串。在MySQL中,我们主要使用`LIKE`、`NOT LIKE`、`INSTR`、`REGEXP`和`RLIKE`等关键字来进行模糊...

    MySql模糊查询like通配符使用详细介绍.docx

    MySQL 模糊查询 Like 通配符使用详细介绍 MySQL 提供了两种模式匹配方式:SQL 模式和正则表达式模式。SQL 模式允许使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL 中,SQL 的模式...

    MySql模糊查询like通配符使用详细介绍.pdf

    MySql 模糊查询 like 通配符使用详细介绍 在 MySQL 中,模糊查询是使用 LIKE 或 NOT LIKE 操作符来实现的。LIKE 操作符可以使用两个通配符:“_”和“%”。“_”表示任意单个字符,而“%”匹配任意数目字符(包括零...

    mysql模糊查询like与REGEXP的使用详细介绍

    每位程序员们应该都知道,增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,...下面这篇文章就给大家详细介绍了mysql模糊查询like与REGEXP的使用,有需要的朋友们可以参考学习。

    mysql中模糊查询的四种用法介绍

    本文将详细介绍四种常见的MySQL模糊查询用法,帮助你在处理数据库查询时更加灵活高效。 1. **百分号(%)**:百分号在模糊查询中代表任意数量的字符,包括零个字符。例如,`SELECT * FROM user WHERE u_name LIKE '...

    MySQL模糊查询语法[文].pdf

    MySQL的模糊查询是数据库操作中一个非常实用的功能,它允许我们使用特定的通配符来匹配不完全确定的数据。在MySQL中,有两种主要的模糊查询方式:标准的SQL模式匹配和基于正则表达式的模式匹配。 1. **SQL模式匹配*...

    MySQL模糊查询语句整理集合

    MySQL模糊查询是数据库查询中非常实用的功能,它允许我们在不知道确切数据的情况下,通过特定的通配符进行数据筛选。在本文中,我们将深入探讨几种主要的模糊查询语句及其应用场景。 1. `%` 通配符 `%` 代表任意...

    mysql语句集合包括模糊查询索引函数

    在这个“mysql语句集合包括模糊查询索引函数”中,我们将深入探讨SQL中的关键概念,特别是与模糊查询、索引和函数相关的知识。 首先,SQL语句主要分为四大类:SELECT(查询)、INSERT(插入)、UPDATE(更新)和...

    实现输入拼音或者简码模糊查询数据库某个字段的值

    在IT领域,尤其是在开发数据库应用时,模糊查询是一种常见的需求,它允许用户通过部分关键词或者拼音来搜索相关信息。本文将详细讲解如何使用C#语言实现拼音模糊查询功能,让用户仅输入一个字母就能查询到数据库中...

    mysql数据表模糊查询

    ### MySQL 数据表模糊查询详解 #### 一、引言 在进行MySQL数据库操作时,查询功能是最常用的操作之一。为了满足复杂多样的查询需求,MySQL提供了多种查询方式,包括精确查询与模糊查询。模糊查询是一种非常实用的...

    Python使用sql语句对mysql数据库多条件模糊查询.pdf

    Python 使用 SQL 语句对 MySQL 数据库多条件模糊查询 Python 是一种广泛使用的编程语言,而 MySQL 是一种常用的关系型数据库管理系统。在实际应用中,我们经常需要使用 Python 连接 MySQL 数据库,并执行多条件...

    [] - 2022-07-25 MySQL模糊查询再也用不着 like+% 了!.pdf

    互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...

    千万级Mysql-MongoDB性能对比报告

    ### 千万级Mysql-MongoDB性能对比报告 #### 测试环境配置 - CPU: i5 3.30GHz - 内存: 8GB - 操作系统: Windows 7 #### 测试工具与语言 - **Python**作为测试语言 - **MySQL**版本: 5.1,连接工具为**PyMySQL** -...

    java web ajax 入门Demo 百度 Google 搜索 提示 ajax 模糊查询

    本文将通过一个简单的Demo,教你如何使用Ajax实现类似百度或Google搜索时的模糊查询功能。 首先,我们需要了解Ajax的基本构成: 1. **XMLHttpRequest对象**:这是Ajax的核心,用于在后台与服务器进行通信,发送...

    Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

    在使用Mybatis与MySQL进行模糊查询时,遇到输入中文无法检索到结果的问题,通常是由于字符编码设置不正确导致的。MySQL数据库在处理中文字符时,需要确保从客户端传输到服务器的数据编码与数据库内部存储的编码一致...

Global site tag (gtag.js) - Google Analytics