2019独角兽企业重金招聘Python工程师标准>>>

在数据库中索引对于查找是非常有用的,楼主做了两个实验,插入数据的时候非常慢,楼主是这样实验的:

一:数据库列的索引

①:首先执行语句insert into test.user (select * from root.user where root.user.id>1 and root.user.id<10000),对于id,在没有建索引的情况下,楼主执行完sql之后等了大概有十秒还没有结束,趁这个时间楼主上了个厕所,回来的时候,惊呆了,sql居然还没有执行完成,又等了一会儿,实在等不下去了,就没有去理sql了;我没有等到sql结束,一分钟之后我终止了sql。

②:楼主对表字段name加了索引,效果十分显著,让楼主大吃一惊,加了索引之后时间是0.56秒(具体时间忘了),什么概念,没有索引的sql对比有索引的sql时间居然是后者的100倍级别了!

③:对于索引,数据库是怎么管理的。我们都知道数据在硬盘上存储是没有规律的,即便是两条相邻的数据,他的物理地址也不一定是相邻的。所以数据库为加了索引的列维护了一个二叉树,二叉树的每一个节点记录了对应的字段数据(id的值)和物理地址,当你在检索有索引的数据的时候,数据库会从二叉树上快速定位到你检索列的值,然后根据对应的值获取对应的地址,从而根据无力地址快速定位到数据。

二:模糊查找是否走索引

①:楼主用了这样一个sql,explain select * from table_name where name like '%李%',这个sql即便是你对name加了索引,他也不会走索引,而是走全表。

②:楼主换了一种sql,explain  select * from table_name where name like '李%',这种sql之后就走了索引。

③:之后楼主吧百分号换到了前面,explain select * from table_name where name like '%李',这种sql还是没有走索引

④:然后楼主又换:explain select * from table_name where id>0 and id <10000 and name like '李%',在mysql5.6版本,这条语句在id没有加索引的情况下还是走了索引,因为在5.6版本mysql做了优化,他先会走有索引的列,然后去筛选其他的条件,这样会大大减少检索时间。

⑤:explain select * from table_name where id>0 and id <10000 and name like '_李%',这条sql是不会走索引的,因为后面的模糊查找条件被下划线作为占位符占据了位置。mysql不会走索引

所以,对于mysql的索引问题:模糊查找,%在前面不走索引,在后面走索引,sql有索引的会先走索引,但是比较重要的一条是,模糊查找的百分号在后面的时候,要查找的数据被其他占位符占取的时候,sql是不会走索引的!

mysql左模糊 走索引_mysql的模糊查找是否走索引问题相关推荐

  1. mysql 去掉复合索引_MySQL性能优化[实践篇]-复合索引实例

    上篇文章最后提了个问题 假设某个表有一个**复合索引(c1,c2,c3,c4)**,问以下查询中只能使用该复合索引的c1,c2,c3部分的有那些 1. where c1=x and c2=x and ...

  2. mysql按升序创建索引_Mysql中的降序索引底层实现

    什么是降序索引 大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集. 我们通常使用下面的语句来创建一个索引: 上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引 ...

  3. 查询没有走索引_MySQL 如何正确的使用索引

    学习索引,主要是写出更快的sql,当我们写sql的时候,需要明确的知道sql为什么会走索引?为什么有些sql不走索引?sql会走那些索引,为什么会这么走?我们需要了解其原理,了解内部具体过程,这样使用 ...

  4. mysql 连接查询索引_Mysql (四)连接查询和索引

    一.什么是连接查询:就是将二个或二个以上的表,"连接起来"当做一个数据源,并从中去取得所须要的数据.连接查询包括交叉连接查询.内连接查询.外连接查询 (一)交叉连接:交叉连接不带W ...

  5. mysql+index组合索引_MySQL 优化之 index merge(索引合并)

    标签: MySQL5.0之前,一条语句中一个表只能使用一个索引,无法同时使用多个索引.但是从5.1开始,引入了 index merge 优化技术,对同一个表可以使用多个索引.理解了 index mer ...

  6. mysql 如何添加索引_MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】...

    MySQL如何创建一个好索引?创建索引的5条建议 过滤效率高的放前面 对于一个多列索引,它的存储顺序是先按第一列进行比较,然后是第二列,第三列...这样.查询时,如果第一列能够排除的越多,那么后面列需 ...

  7. mysql建表语句主键索引_MySQL添加主键、索引

    查看索引 SHOW INDEX FROM  数据库表名 比如:SHOW INDEX FROM order_info; 添加索引 alter table 数据库add index 索引名称(数据库字段名 ...

  8. mysql聚集索引_MySQL中怎样创建聚集索引和非聚集索引,求创建这两种索引的SQL语句。谢谢...

    ALTER TABLE t1 ADD INDEX(or CREATE INDEX) ALTER TABLE t1 ADD FULLTEXT INDEX ALTER TABLE t1 ADD COLUM ...

  9. mysql主键和唯一索引_mysql 主键和唯一索引的区别

    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值. 主键列在创建时,已经默认为非空 ...

最新文章

  1. SDUT 2127 树-堆结构练习——合并果子之哈夫曼树(优先队列)
  2. css中flex布局
  3. Redis源码剖析(一)服务器与客户端交互流程
  4. 看完豁然开朗!mysql集群搭建linux
  5. 网络管理与维护作业9
  6. 解决办法:configure后,没有更新Makefile
  7. cadence PCB走等长线设置
  8. 独家专访VB100:趋势科技退出缘于新病毒检测失败
  9. levelDB源码阅读-skiplist跳表 上
  10. oracle sql去重
  11. CopyPasteCharacter 快打輸入打勾、愛心、數學、表情特殊符號
  12. 高中辍学,三年间做遍各种零工,转行程序员改变人生
  13. 烤仔建工承建,著名画家孙天骄的元宇宙美术馆即将开门迎客
  14. 上传身份证--uc手机浏览器拍照覆盖问题
  15. Redis——事务 锁机制
  16. 3D打印美容设备MagicBox
  17. 常用的数据集成ETL工具有哪些?
  18. FAQ:Nacos报错:server is DOWN now, please try again later!
  19. DANN loss/acc振荡
  20. 我们期望的NFC手机方案

热门文章

  1. LAXCUS分布式操作系统6.0 RP1版本正式发布
  2. 台式计算机用u盘给电脑安装系统,如何在台式计算机上用U盘重新安装Win7系统
  3. 熊猫直播:成也资本,败也资本
  4. 计算机学院心理节活动,计算机学院举办系列心理健康教育活动
  5. 【JZOJ 省选模拟】多项式(poly)
  6. 智能电饭煲电路图及其原理_智能电饭煲工作原理图
  7. 基于51单片机的宠物自动猫粮狗粮喂养机proteus仿真原理图PCB
  8. 乡村田园风的美食账号为何能在强者如云的美食号中走出一条路?
  9. 微软打算用DNA存储数据 但成本和速度仍是个大问题
  10. 全国竞赛算不算全国计算机二级,竞赛证书的等级如何区分