sql 优化相关

选择合适的数据库引擎

Myisam存储引擎:如果表对事物要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎,比如论坛中的发帖表,回复表

Innodb存储引擎:对事物要求高,保存的数据都是重要数据.我们建议使用innodb,比如订单表,账号表

Myisam和innodb的区别: 

1. 事务安全,myisam不支持使用,而innodb支持 

2. 查询和添加速度,myisam不用支持事务就不用考虑同步锁,查找和添加的速度快 

3. 支持全文索引,myisam支持,innodb不支持 

4. 锁机制:myisam支持表锁,innodb支持行锁 

5. 外键:myisam不支持外键,innodb支持外键

选择合适的索引

索引是帮助DBMS高效获取数据的数据结构. 

分类:普通索引,唯一索引,主键索引,全文索引 

1.普通索引:允许重复的值出现 

2.唯一索引:除了不能有重复的记录外,其它和普通索引一样.(用户名;用户身份证;手机号) 

3.主键索引:是随着设定主键而创建的;也就是把某个列设为主键的时候,数据库就会给该列创建索引;唯一且没有null值 

4.全文索引:用来对表中文本域(char,varchar,text)进行索引,全文索引针对myisam

.使用索引的一些技巧

索引弊端: 

1. 占用磁盘空间. 

2. 对dml(插入,修改.删除)操作有影响,变慢 

使用场景: 

1. 肯定在where条件经常使用,如果不做查询就没有意义 

2. 该字段的内容不是唯一的几个值(sex). 

3. 字段内容不是频繁变化

具体技巧: 

1. 对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引(最左匹配) 

2. 对于使用like查询,查询如果是”%aaa”不会使用到索引,而”aaa%”会使用到索引 

3. 如果条件中有or,有条件没有使用索引,即使其中有条件带索引,也不会使用.简单来说,就是要求使用的所有字段,都必须单独使用时才能使用索引. 

4. 如果列类型是字符串,拿一定要在条件中将数据使用引号引用起来,否则索引失效 

5. 如果mysql估计使用全表扫描要比索引快,则不适用索引.例子:表里只有一条记录

数据库优化之分表

分表分为水平分表(按行)和垂直分表(按列)

水平:在实际操作中,mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉.水平分表能够很大程度的减少这些压力.

垂直:如果一张表中某个字段值非常多(长文本,二进制等),而且只有在很少的情况下会查询,比如商品的详情描述,这时候就可以把字段单个放到一个表,通过外键与原表关联起来

水平分表策略: 

1. 按时间分表:这种分表方式有一定的局限性,当数据有较强的时效性.如微博发布纪录,微信消息纪录等,这种数据很少会有用户查询几个月前的数据,这时可以按月分表 

2. 按区间范围分表:一般在有严格的自增id需求上,如按照user_id水平分表 

3. Hash分表(用的多):通过一个原始目标的id或者名称通过一定的hash算法计算出数据库存储表的表名,然后访问相应的表.

数据库的读写分离

一台数据库支持的最大并发连接数是有限的,如果用户并发访问太多,一台服务器满足不了要求时,可以集群处理.mysql的集群处理技术最常用的是读写分离,

1.主从同步:数据库最终会把数据持久化到磁盘,如果集群必须确保每个数据库服务器的数据时一致的.能改变数据库数据的操作都往主数据库去写,而其他的数据库从主数据库上同步数据 

2.读写分离:使用负载均衡来实现写的操作都往主数据.而读的操作都往从数据库去

数据库优化之缓存

在持久层(dao)和数据库(db)之间添加一个缓存层,如果用户访问的数据已经缓存起来时,在用户访问数据时从缓存中获取,不用访问数据库,而缓存是在操作内存,访问速度快

作用:减少数据库服务器压力,减少访问时间

SQL语句优化小技巧

DDL优化: 

1. 通过禁用索引来提供导入数据性能,这个操作主要针对有数据的表追加数据 

2. 关闭唯一校验 

3. 修改事务提交方式(导入)(变多次提交为一次)

DML优化: 把多条插入的语句合并为一条(变多次提交为一次)

DQL优化:

Order by 优化 

多用索引排序

普通结果排序(非索引排序)

Group by 优化:如果对排序的结果没有排序的需求,可以考虑在其后面加上order by nul

子查询优化

Or优化: 

1.or两边都是用索引字段做判读,性能好 

2.or两边,有一边不用,性能差 

3.如果name=”a” or name=”b”,这种方式,索引失效

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容