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

坑梓网站建设方案手机大全商城

坑梓网站建设方案,手机大全商城,小型企业网站设计与制作,制作主页的软件目录 1.插入数据 2.大批量插入数据 3.order by优化 4.group by优化 5.limit优化 6.count优化 count用法 7.update优化 1.插入数据 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化 第一个:批量插入数据 Insert into tb_test va…

目录

1.插入数据

2.大批量插入数据

3.order by优化

4.group by优化

5.limit优化

6.count优化

count用法

7.update优化


1.插入数据

如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化

第一个:批量插入数据

Insert  into  tb_test  values (1, 'Tom '), (2, 'Cat '), (3, 'Jerry ');

第二个:手动控制事务

start  transaction;
insert  into  tb_test  values (1, 'Tom '), (2, 'Cat '), (3, 'Jerry ');
insert  into  tb_test  values (4, 'Tom '), (5, 'Cat '), (6, 'Jerry ');
insert  into  tb_test  values (7, 'Tom '), (8, 'Cat '), (9, 'Jerry ');
commit;

第三个:主键顺序插入,性能要高于乱序插入

主键乱序插入 : 8  1  9  21  88  2  4  15  89  5  7  3
主键顺序插入 : 1  2  3  4  5  7  8  9  15  21  88  89

2.大批量插入数据

如果一次性需要插入大批量数据(比如 : 几百万的记录 ),使用insert语句插入性能较低, 此时可以使 用MySQL数据库提供的load指令进行插入。操作如下:

-- 执行load指令将准备好的数据,加载到表结构中
load  data  local  infile  '/root/sql1.log '  into  table  tb_user  fields
terminated  by  ', '  lines  terminated  by  '\n ' ;
 

3.order by优化

MySQL的排序,有两种方式:

  • Using filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。

  • Using index : 通过有序索引顺序扫描直接返回有序数据,这种情况即为 using index,不需要 额外排序,操作效率高。 对于以上的两种排序方式, Using index的性能高,而Using filesort的性能低,我们在优化排序 操作时,尽量要优化为 Using index。

由于 name, price都没有索引,所以此时再排序时,出现Using filesort, 排序性能较低。

explain select id,name,price from tb_sku order by name,price;

创建索引

create index sku_name_price on tb_sku(name,price);

建立索引之后,再次进行排序查询,就由原来的Using filesort, 变为了 Using index,性能就是比较高的了。

explain select id,name,price from tb_sku order by name,price;

4.group by优化

在没有索引的情况下,执行如下SQL,查询出现Using temporary这种效率低

explain select profession,count(*) from tb_user group by profession;

我们再针对于 profession , age, status 创建一个联合索引

create index idx_user_pro_age_sta on tb_user (profession,age,status);

再执行前面相同的SQL查询出现Using index这种效率高

explain select profession,count(*) from tb_user group by profession;

如果仅仅根据age分组,就会出现 Using temporary ; 在联合索引中,也是符合最左前缀法则的。

explain select age,count(*) from tb_user group by age;

5.limit优化

在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。

我们一起来看看执行limit分页查询耗时对比:

select * from tb_sku limit 10000,10;
select * from tb_sku limit 100000,10;
select * from tb_sku limit 1000000,10;
select * from tb_sku limit 2000000,10;

通过测试我们会看到,越往后,分页查询效率越低,这就是分页查询的问题所在。

优化思路 : 一般分页查询时,通过创建 覆盖索引 能够比较好地提高性能,可以通过覆盖索引加子查 询形式进行优化。

explain   select  *  from  tb_sku  t  ,  (select  id  from  tb_sku  order  by  id
limit  2000000,10)  a  where t.id  =  a.id;

优化前:

优化后:

6.count优化

数据量很大,在执行count操作时,相对是耗时的。

查询200万的数据时:

select  count (*)  from  tb_user ;

如果说要大幅度提升InnoDB表的count效率,主要的优化思路:自己计数(可以借助于redis这样的数 据库进行 ,但是如果是带条件的count又比较麻烦了)

count用法

count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1, 否则不加,最后返回累计值。

用法: count (*)、 count (主键)、 count (字段)、 count (数字)

count用 法含义
count(主 键)InnoDB 引擎会遍历整张表,把每一行的 主键id 值都取出来,返回给服务层。 服务层拿到主键后,直接按行进行累加(主键不可能为null)
count(字 段)没有not null 约束 : InnoDB 引擎会遍历整张表把每一行的字段值都取出 来,返回给服务层,服务层判断是否为null,不为null,计数累加。 有not null 约束: InnoDB 引擎会遍历整张表把每一行的字段值都取出来,返 回给服务层,直接按行进行累加。
count(数 字)InnoDB 引擎遍历整张表,但不取值。服务层对于返回的每一行,放一个数字“1” 进去,直接按行进行累加。
count(*)InnoDB引擎并不会把全部字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加。

按照效率排序的话, count(字段) < 量使用 count()。 count(主键 id) < count(1) ≈ count(),所以尽量使用 count(*)。

7.update优化

我们主要需要注意一下update语句执行时的注意事项。

update tb_user set name = 'javaEE' where id  = 1;

当我们在执行删除的SQL语句时,会锁定id为1这一行的数据,然后事务提交之后,行锁释放。

但是当我们在执行如下SQL时。

update tb_user set name = '曹操' where name = '孙悟空' ;

当我们开启多个事务,在执行上述的SQL时,我们发现行锁升级为了表锁。 导致该update语句的性能大大降低。

InnoDB的行锁是针对索引加的锁,不是针对记录加的锁 ,并且该索引不能失效,否则会从行锁升级为表锁 。


文章转载自:

http://pEDZijKs.kkdbz.cn
http://JGnUSj40.kkdbz.cn
http://RHMT0XFF.kkdbz.cn
http://2OJ1ARuq.kkdbz.cn
http://6hsDEORh.kkdbz.cn
http://xidP3ISm.kkdbz.cn
http://RP1RoPeq.kkdbz.cn
http://SurPcRGT.kkdbz.cn
http://6Pv00cvE.kkdbz.cn
http://AkkS6F71.kkdbz.cn
http://MxP3i3Sy.kkdbz.cn
http://VE0KH1jT.kkdbz.cn
http://pTXNvDua.kkdbz.cn
http://x1CHiid0.kkdbz.cn
http://05vwUHXF.kkdbz.cn
http://Vx915XrS.kkdbz.cn
http://iTGNTUZv.kkdbz.cn
http://5ShdGs3G.kkdbz.cn
http://AB1DQlIA.kkdbz.cn
http://3GID6vHy.kkdbz.cn
http://jpSHdrY8.kkdbz.cn
http://pBSomVpN.kkdbz.cn
http://BP9y9LaN.kkdbz.cn
http://yjgRBVM7.kkdbz.cn
http://BPZ0pTPg.kkdbz.cn
http://KEW78H1W.kkdbz.cn
http://j3w95UwB.kkdbz.cn
http://2UOnhnK3.kkdbz.cn
http://RHJYRjfb.kkdbz.cn
http://GPy1lLca.kkdbz.cn
http://www.dtcms.com/wzjs/601732.html

相关文章:

  • 百度不收录的网站网站开发人员主要干什么的
  • 要制作网站合肥市高端网站建设
  • 好的网站具备的条件用php做的网站有哪些
  • 建站公司不给源码代写文章兼职
  • 网站的关键词可以取消吗app的好处与弊端
  • 电商网站在线支付怎么做做外链一般都用网站首页吗
  • 网站快速收录百度一下你就知道了主页
  • 网站建设与营销社团在线制作免费生成图片logo
  • 制作网站购买主机建网站盈利的几种方式
  • 写作网站vir外贸流程中的单证有哪些
  • 主做销售招聘的招聘网站有哪些微信打卡小程序怎么弄
  • 公司一个人做网站网站建设时间怎样看
  • 如何做网站模版公司网页制作哪家比较好
  • 付费网站怎么制作营销课程培训都有哪些
  • 网页链接制作软件模板网站怎么建设优化
  • 西安网站建设公司云网南京企业网站
  • 最便宜做公司网站陕西宁德建设工程有限公司网站
  • 被墙网站怎么做301跳转森普网站建设
  • 网站名称可以是域名南昌seo服务
  • 手机当服务器建网站深圳市宝安网站建设
  • 响应式网站 英文icp备案需要什么材料
  • 营销网站建设收费标准网站验证码原理
  • asp.net mvc网站开发外贸出口流程12步骤图
  • 秦皇岛做网站多少钱大连做网站价钱
  • seo织梦网站建设步骤网业打开慢的原因
  • 建设营销型网站多少钱微知微网站建设实训平台
  • 二级域名做网站域名临沂小程序开发公司哪家好
  • 做论坛app网站有哪些广州网站制作后缀
  • 建设网站工具百度seo服务公司
  • 扁平化网站设计趋势wordpress侧边栏宽度