登录  /  注册
博主信息
博文 42
粉丝 3
评论 2
访问量 92037
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
如何优化MySQL查询
Whitney的博客
原创
3483人浏览过

一、数据表数据类型的优化

字段采用合适的数据类型

例如:

1、tinyint,smallint,bigint

正常情况下人的年龄可以使用tinyint数据类型存储。

2、char,varchar

两者的区分在于是否是定长(char属性会自动补齐不够的位)

可以使用char字段存储 md5加密后的字符串

IP地址的存储可以使用ip2long 函数处理后 存储为char类型,取出时long2ip

3、enum

可以使用enum字段存取特定固定的分类,效率更高。

二、索引的优化

1、在数据量庞大而且又有经常性的查询操作的时候可以采用增加索引的方式,提高查询效率,但是索引不是越多越好,在加索引时需注意,在在合适的字段上创建最合适的索引。

2、复合索引的前缀原则

    例:一个多列索引为 (col1 ,col2, col3)

    那么在索引在列 (col1) 、(col1 col2) 、(col1 col2 col3) 的搜索会有作用。

3、索引的失效情况(查询时应避免索引失效的情况)

① like查询时%的问题,例:若“A%”则索引有效,若“%A”则索引失效

② 查询时使用or条件,除非每个字段都加索引,否则索引失效

③ 采用isnull条件时,索引失效

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

三、SQL语句的优化

1、使用连接(join)来代替子查询

2、尽量避免使用select *

3、变复杂为简单,切分查询(例如需要删除千万条数据,则可采用部分删除法)

4、使用union代替手动创建的临时表

5、在建有索引的字段上尽量不要使用函数进行操作(将会使索引不能发挥应有的作用)

四、存储引擎的优化

尽量使用InnoDB引擎

五、数据表结构的优化

1、分区操作:通过特定的策略来对数据表进行物理拆分

例:按地区分,按活跃程度分,根据id使用二分取模法分

2、分库分表

水平拆分:拆分活跃数据与非活跃数据,连接时用union

垂直拆分:拆分常用列与非常用列,连接时用join

六、数据库架构的优化

可以对数据库进行主从分离,读写分离,负载均衡操作。

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学