当前位置: 首页 > news >正文

网站开发的项目开发计划如何建立自己的平台

网站开发的项目开发计划,如何建立自己的平台,找人做网站需要注意,唐山网站建设|唐山网站制作|公司建站666起|唐山红城网络不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL、IS NOT NULL、!、like %* 、like %*%,不能使用索引查询#xff0c;只能使用全表扫描。 刚入行时我也是这么认为的#xff0c;还奉为真理#xff01; 但是时间工作中你会发现还是走索引…不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL、IS NOT NULL、!、like %* 、like %*%,不能使用索引查询只能使用全表扫描。 刚入行时我也是这么认为的还奉为真理 但是时间工作中你会发现还是走索引啊下面我们来一一探究其中的奥秘。 一、首先验证一下是会走索引的 创建一个表结构如下 create table user_info(id int PRIMARY key auto_increment,name varchar(16) default ,age tinyint default 0,address varchar(32) default ,PRIMARY KEY (id),KEY name (name),KEY address_2 (address,name));ALTER TABLE user_info ADD INDEX (NAME);ALTER TABLE user_info ADD INDEX (address); 数据1 INSERT INTO user_info(NAME,age,address)VALUES (9,9,shenzhen9);BEGINDECLARE i INT DEFAULT 1000;WHILE i 9000 DOINSERT INTO user_info (NAME, age, address)VALUES(NULL, i , SUBSTRING(MD5(RAND()),1,10) ) ;SET i i 1 ;END WHILE ;① EXPLAIN SELECT * FROM user_info WHERE name IS NOT NULL② EXPLAIN SELECT * FROM user_info WHERE name !9③ EXPLAIN SELECT * FROM user_info WHERE name is null 数据2 INSERT INTO user_info(NAME,age,address)VALUES (null,9,shenzhen9);BEGINDECLARE i INT DEFAULT 1000;WHILE i 9000 DOINSERT INTO user_info (NAME, age, address)VALUES(REPLACE(UUID(),-,), i , SUBSTRING(MD5(RAND()),1,10) ) ;SET i i 1 ;END WHILE ;④ EXPLAIN SELECT * FROM user_info WHERE name IS NOT NULL⑤ EXPLAIN SELECT * FROM user_info WHERE name !9⑥ EXPLAIN SELECT * FROM user_info WHERE name is null 执行数据1 会发现sql①②走索引③不走索引 执行数据2 会发现sql⑥走索引④⑤不走索引 二、B树数据排列规则 1、聚簇索引索引 ①页面中的记录是按照主键值进行排序的 ②B树每一层节点(页面)都是按照页中记录的主键值大小进行排序的 ③B树叶子节点对应的页面中存储的是完整的用户记录(就是一条记录中包含我们定义的所有列值还包含一些InnoDB自己添加的一些隐藏列) 2、二级索引 ①页面中的记录是按照给定的索引列的值进行排序的。 ②B树每一层节点(页面)都是按照页中记录的给定的索引列的值进行排序的。 ③B树叶子节点对应的页面中存储的只是索引列的值 主键值。 二级索引值能为空。那对于索引列值为NULL的二级索引记录在B树的哪个位置呢 在B树的最左边。如下图 至于为什么,InnoDB是这样的规定SQL中的NULL值是列中最小的值 什么时候索引又不生效了呢 对比数据1和数据2两个数据中null值的数量不一样当null值占多数时is not null 和!走索引 ,is null不走索引了数据2刚好相反。 估计大家都能看出什么来了。带索引字段使用null做判断是否走索引与数据量有关,归纳起来就是成本问题(关于mysql索引扫描成本计算详细分析建议大家可以去看一下掘金小册《mysql是怎样运行的:从根上理解mysql》)。 索引(二级索引)扫描成本: 1、读取索引记录成本 2、反查主键索引查找完整数据成本即回表 如果查询读取的二级索引越多那么需要回表查询的次数就会越多达到一定的比例就会变成全部查询了也就是上面null 查询时索引有时不生效的原因。 综上MySQL中决定使不使用某个索引执行查询的依据是成本大小。而不是在WHERE子句中用了IS NULL、IS NOT NULL、!这些条件 三、如何让like‘%字符串%’‘字符串%’时走索引 通常情况下我们使用like %*%、%*的确不会走索引 但是并不代表就一定不能走索引我们对上面表中name和age建立复合索引 explain select name from user_info where name like %a%; SIMPLE user_info index idx_n_a 53 6 16.67 Using where; Using index explain select name,age from user_info where name like %a%; SIMPLE user_info index idx_n_a 53 6 16.67 Using where; Using index 以下两个例子是查询了不在复合索引中的列进而造成全表扫描 explain select name,age,address from user_info where name like %a%;SIMPLE user_info ALL 6 16.67 Using where explain select * from user_info where name like %a%;SIMPLE user_info ALL 6 16.67 Using where 所以like走不走索引并不是绝对的要看使用条件                          原文链接https://blog.csdn.net/weixin_29454029/article/details/113127748
http://www.hkea.cn/news/14442824/

相关文章:

  • 专业的网站建设公司哪家好学建设网站去哪里学
  • 网站做关键词排行一个月多少钱网上注册公司需要哪些材料和流程
  • 本地的唐山网站建设wordpress图片站教程
  • 网站seo优化实例建筑施工组织设计毕业设计
  • 中国风html5网站模板ps ui做响应式网站要求
  • 一个网站可以做多少个关键词南阳做网站优化的公司
  • 住房和城乡建设部网站加装电梯wordpress for sea
  • 黄埭做网站佛山做网站费用
  • 海口专业网站搭建厂架设网站需要什么
  • linux可以做网站开发吗微信小程序开发介绍
  • 高站网站建设网站返回顶部代码
  • 购买域名和网站安徽省住房城乡建设厅网站官网
  • 牟平做网站全国企业信息公示系统官网
  • 网站建设与网页设计的区别微分销系统软件
  • 凡科建站官网地址安徽科技网站建设
  • 百度收不到我的网站做怎个样网做站个网站
  • 温州建站模板搭建广州市建设招标管理办公室网站
  • access2003做网站wordpress新建文章随机一个阅读量
  • 做家教用什么网站成都论坛网站建设
  • 北京上云网站建设公司成都注册公司需要什么材料和手续
  • 深圳搭建p2p网站网站建设作业百度云资源
  • 和田网站制作dw网页制作上机试题
  • 临沂 网站建设wordpress添加海报分享功能
  • centos 网站搭建网站推广南京公司
  • 网站高端定制seo网站优化论文
  • 石家庄网站建设培训班南阳商都网站做网站
  • 个人网站免费制作平台公司logo背景墙设计效果图
  • 乐清建设网站哪家好中国空间站有哪些国家加入
  • 湛江市建设局官方网站仿新浪首页网站模板
  • 官方网站手机 优帮云飞狐小说网站建设