Mysql问题整理

【mysql】主键、普通索引、唯一索引和全文索引的比较

PHPer 2020-04-04 839次浏览 0条评论 0 0 0
不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。(待验证 20200404)全文索引(适合在进行模糊查询的时候使用)MySQL从3.23.23版开始支持全文索引和全文检索。...

不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。(待验证 20200404)

全文索引(适合在进行模糊查询的时候使用)MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT。全文索引可以在CHAR、VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建,也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。


MYSQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录 开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无 需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。


mysql在使用like查询中,能不能用到索引?在什么地方使用索引呢?

2

3

在使用like的时候,如果使用‘%%’,会不会用到索引呢?

EXPLAIN SELECT * FROM `user` WHERE username LIKE'%ptd_%';

  53d3c16347_normal.png

上面的结果是全表扫描,并没有使用到索引。


EXPLAIN SELECT * FROM `user` WHERE username LIKE'ptd_%';

0337fba731_normal.png

这个使用到了索引。


只使用左边一个%的查询:

EXPLAIN SELECT * FROM `user` WHERE username LIKE'%ptd_';

8cb75dc07f_normal.png  

在左边使用%时也是全表扫描,没有使用到索引。


综上,mysql在使用like查询的时候只有使用后面的%时,才会使用到索引。


总体分析

PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。

MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?举个例子来说,比如你在为某商场做一个会员卡的系统。这个系统有一个会员表有下列字段:会员编号 INT会员姓名 VARCHAR(10)会员身份证号码 VARCHAR(18)会员电话 VARCHAR(10)会员住址 VARCHAR(50)会员备注信息 TEXT那么这个 会员编号,作为主键,使用 PRIMARY会员姓名 如果要建索引的话,那么就是普通的 INDEX会员身份证号码 如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)会员备注信息 , 如果需要建索引的话,可以选择 FULLTEXT,全文搜索。不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。...

登录 | 立即注册

更新于:2020-04-04 11:22:28
    您需要登录后才可以评论。 登录 | 立即注册
    相关内容

    MYSQL8.0全文索引使用​

    以下的配置参数为啥是这样配置的。 在 [mysqld]的下面追加 需要将搜索短语长度设定合适 #MyISAM ft_min_word_len = 4; 默认值 ft_max_word...

    mysql 中文全文索引模糊查询和like模糊查询的速度对比

    作者说全文索引 速度是 LIKE 10倍以上,根据图片显示,速度是几倍,没有10倍那么多

    【该文章就是坑】mysql使用中文的全文索引(注意...

    说是mysql5.7.6以上支持中文的全文索引,是不是说错了,我用5.7.21试试 20200408 0028 我用5.7.21 测了失败,然后安装了 mysql8.0.19,结果测试...

    Mysql问题整理

    这里整理下Mysql使用中遇到的各种问题

    Yii2数据库报错-SQLSTATE[HY093]: Invalid parameter number: no parameters were b...

    Mysql server has gone away 报错原因分析及解决办法

    mysql 警告 could not be resolved: Name or service not known

    Mysql用特殊字符设置密码遇到的问题

    Mysql的函数substring使用注意事项

    MySQL 5.7内存使用分析

    mysql 命令整理

    【mysql】主键、普通索引、唯一索引和全文索引的比较

    没有接收到要导入的数据。可能是文件名没有提交,也...

    Mysql知识学习

    MySQL 8.0 索引特性1-函数索引

    MySQL 8.0 索引特性1-函数索引

    MySQL字符串函数substring:字符串截取

    Mysql的临时变量取值3例

    mysql查找字符串出现位置

    mysql 更改AUTO_INCREMENT 失败的解决办法

    推荐内容

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台...

    在网上找的ss+SSTap的方式都不能通过SSTap的链接测试。最后找到了v2ray+SSTap的方式。 注意事项,首先单独有v2ray看能不能正常上网。另外加速时要v2ray和SST...

    使用V2Ray的mKCP协议加速游戏

    当前脚本已发布新版本,地址: https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh 旧仓库已废...

    v2rayN已停止工作

    要安装.NET Framework 4.6 或者更高版本

    超省心游戏加速:Wireguard+udp加速(CentOS版)--(

    Wireguard+udpspeeder+udp2raw游戏加速方案 ---------------------------------------错误报告及解决-----------...

    wireguard+udpspeeder+udp2raw多用户配置

    Wireguard+udpspeeder+udp2raw游戏加速方案改进版-实测有效

    解决'nmake' 不是内部或外部命令,也不是可运行的程序

    在用gifsicle时,需要在其src目录下使用 nmake -f Makefile.w32 命令,报错 'nmake' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 于是网...