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

做一个网站怎么做网络营销推广系统

做一个网站怎么做,网络营销推广系统,做化妆品的网站有哪些,网站建设 新手从SQL优化 插入数据 insert优化 1)批量插入 insert into tb_user values(1,Tom),(2,Cat),(3,Jerry); 2)手动提交事务 mysql 默认是自动提交事务,这样会导致频繁的开启和提交事务,影响性能 start transaction insert into tb_us…

SQL优化

插入数据

insert优化

  • 1)批量插入

insert into tb_user values(1,'Tom'),(2,'Cat'),(3,'Jerry');

  • 2)手动提交事务

mysql 默认是自动提交事务,这样会导致频繁的开启和提交事务,影响性能

start transaction

insert into tb_user values(1,'Tom'),(2,'Cat'),(3,'Jerry');

insert into tb_user values(4,'Tom'),(5,'Cat'),(6,'Jerry');

insert into tb_user values(7,'Tom'),(8,'Cat'),(9,'Jerry');

commit;

  • 3)主键顺序插入

主键乱序插入会导致索引页频繁的进行页分裂,导致性能降低,具体参见主键优化中的内容。

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

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

大批量插入数据

如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用mysql数据库提供的load指令进行插入,操作如下:

需要三步:

1、客户端连接服务端时,加上--local-infile

mysql --local-infile -u root -p

2、设置全局参数local_infile为1,开启从本地加载文件导入数据的开关

set global local_infile=1;

3、执行load指令,将准备好的数据加载到表结构中。

load data local infile ‘地址(例如:/root/mysql1.sql)’  into table '表名称(例如:table_name)'  fields terminated by ',' lines terminated by '\n'

主键优化

数据组织方式

在InnoDB存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(Index Orgnized Table IOT)

mysql的逻辑存储结构如下:

页分裂

页可以为空,也可以填充一半,也可以填充100%,每个页包含了2-n行数据(如果一行数据过大,会行溢出),根据主键排列。

主键顺序插入

主键乱序插入

主键乱序插入,会造成页分裂,应该尽量避免这种现象。

页合并

当删除一行记录时,实际上记录并没有被物理删除,只是记录被标记(flaged)为删除,并且它的空间变得允许被其他记录声明使用。

当页中删除的数据超过MERGE_THRESHOLD(默认为页的50%),InnoDB会开始寻找最靠近的页(前或后),看看是否可以将两格页合并以优化空间使用

小贴士:

MERGE_THRESHOLD:合并页的阈值,可以自己设置,在创建表或创建索引时指定。

⭐️主键设计原则:

满足业务需求的情况下,尽量降低主键长度。(因为二级索引的页节点存储的是主键)

插入数据时,尽量选择顺序插入,选择AUTO_INCREMET的自增主键

尽量不要使用UUID做主键或者其他自然主键做主键,例如身份证号。

业务操作时,尽量避免对主键的修改

order by 优化

order by的查询计划中Extra有两种:

排序分类

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

Using index:通过有序索引扫描直接返回有序数据,这种情况即为using index,不需要额外排序,操作效率高

演示

没有创建索引时,根据age、phone进行排序

explain select id,age,phone from tb_user order by age,phone;

创建索引,排序方式是asc默认,可以省略

create index idx_user_age_phone_aa on tb_user(age,phone)

创建索引后,根据age、phone进行升序排序,走索引,using index

explain select id,age,phone from tb_user order by age,phone;

创建索引后,根据age、phone进行降序排序,走索引,backward index scan;using index

explain select id,age,phone from tb_user order by age desc,phone desc;

根据age、phone进行排序,一个升序,一个降序

explain select id,age,phone from tb_user order by age asc,phone desc;

创建索引

create index idx_user_age_phone_sd on tb_user(age asc,phone desc)

根据age、phone进行排序,一个升序,一个降序 using index

explain select id,age,phone from tb_user order by age asc,phone desc;

order by优化原则

根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则;

尽量使用覆盖索引;

多字段排序,一个升序一个降序,此时需要注意联合索引在创建时的规则(ASC/DESC)

如果不可避免的出现了filesort大数据量排序的时候,可以适当增大排序缓冲区大小sort_buffer_size(默认是256K)

group by 优化

演示

优化原则

在分组操作时,可以通过索引提高效率;

分组操作时,索引的使用也是满足最左前缀法则;

limit 优化

一个常见又非常头疼的问题是limit 2000000,10,此时需要mysql排序前2000010条记录,仅返回2000000-2000010的记录,其他数据丢弃,查询排序的代价非常大

优化思路:覆盖索引+子查询

一般分页查询时,通过创建覆盖索引,能够比较好的提高性能,可以通过覆盖索引加子查询的方式优化。

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

count 优化

explain select count(*) from tb_sku;

count的快慢是有存储引擎决定的

MyISAM把一个表的数据总行数存在了磁盘上,因此执行count(*)的时候直接返回这个数,效率很高;

InnoDB引存储擎就麻烦了,它执行count(*)的时候,需要把数据一行一行的从引擎里读出来,然后累积计数;

优化思路:自己计数

例如存入redis

count的几种用法

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

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

效率

count(字段)<count(主键)<count(1)≈count(*)

所以尽量使用count(*)

update优化

演示

行级锁

表级锁

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

优化原则:

尽量使用行级锁,避免表级锁;

更新条件使用索引,加的锁是行锁;

索引失效,导致行锁升级表锁;

总结

http://www.hkea.cn/news/646455/

相关文章:

  • 千库网素材南宁seo优势
  • 西安机场商务宾馆百度做网站怎么在百度上做网站
  • ps网站建设seo网络公司
  • 网站建设步骤 教 程网站怎么做谷歌推广
  • 网站制作需要注意什么潍坊做网站哪家好
  • 专门做团购的网站有哪些色盲图
  • 百度做网站续费费用百度营业执照怎么办理
  • 深圳网站建设方维网络企业网站制作要求
  • 制作好网站黑帽seo教程
  • 云南 网站建设网站seo优化对网店的推广的作用为
  • 网站建设免费国外舆情服务公司
  • 怎么做网站banner查排名网站
  • 做网站好看的背景图片相关搜索优化软件
  • 怎么查网站是哪家制作公司做的百度收录查询
  • 企业年金交了有好处吗网络优化工程师吃香吗
  • python做网站开发百度6大核心部门
  • 自己做网站平台企业网站优化价格
  • 淘宝网网站建设的需求分析百度会员登录入口
  • 建网站的专业公司推广网站多少钱
  • 网站不去公安局备案自己怎么搭建网站
  • 外贸网站建设入门深圳网络推广哪家
  • 网站模板资源公司网站推广
  • 广东省建设教育协会官方网站首页html简单网页代码
  • 个人网站意义阿里指数官网最新版本
  • 网站开发方式有哪四种搜索引擎优化课程总结
  • 申请做网站、论坛版主app推广接单
  • 青海网站建设广州seo优化推广
  • 物流公司网站制作模板上海网站关键词排名
  • 广西建设人才网搜索引擎优化的目标
  • 比汉斯设计网站素材图片搜索识图入口