目录
设计合理的数据表结构
索引建立原则
编写高效的SQL
常用技巧分享
Select查询速度
首页 数据库 mysql教程 MYSQL数据库优化的建议_MySQL

MYSQL数据库优化的建议_MySQL

Jun 01, 2016 pm 01:10 PM

设计合理的数据表结构

1:选择合适的数据类型,如果能定长,尽量定长
2:不要使用无法加索引的类型为关键字段,比如text类型
3:为了避免联表查询,有时候可以适当的数据冗余,比如邮箱,名字这些不容易更改的数据
4:选择合适的表引擎,有时候MyISANM适合,有时候InnoDB适合,
5:为了保证查询性能,最好保证每个表建立auto_increatment字段,建立合适的数据库索引
6:最好给每个字段都设置default值

索引建立原则

1:一般针对数据分散的关键字进行建立索引,比如ID,QQ,像性别,状态值建立索引没有意义。
2:尽量使用短索引,一般对int,char/varchar.date/time等类型的字段建立索引
3:需要的时候建立联合索引,但是要注意查询SQL语句的编写
4:一般建议每条记录最好有一个能够快速定位独一无二定位的唯一标识(索引)、
5:不要过度索引,单表建立的索引不要超过5个,负责更新索引很耗时

编写高效的SQL

1:能够快速缩小结果集的where条件写在前面,如果有恒量条件也尽量放在前面。
2:尽量避免group by,distinct,in,or等语句的使用,避免使用联表查询和子查询,因为将使执行效率大大下降。
3:能够使用索引的字段尽量进行合理的有效排列,如果使用了联合索引,请注意提取字段的前后顺序。
4:针对索引字段使用,大小等的比较,if null 和between 将会使用索引,使用like 'abc%'将能够使用索引,
5:如果在SQL中使用了MySQL的部分自带函数,索引将失效,同时将无法使用MYSQL的query Cache,比如letf(),SUBSTR().TO_DAYS(),DATE_FORMAT()等,如果使用了OR或者In,索引也将失效。

常用技巧分享

1:使用 SHOW PROCESSLIST来查看当前MYSQL服务器线程的执行情况,是否锁表,查看相应的SQL语句。
2:设置 my.ini中的long-query-time和log-slow-queries能够记录服务器中那些SQL执行较慢,
3:使用DESC TABLE xxx来查看表结构,使用SHOW INDEX FROM xxx来查看表索引。
4:使用LAOD DATA倒入数据比INSERT INTO快多了。
5:SELECT count() From Tbl在你InnoDb中要扫描整个表来计算有多少行,但是MyISAM只要简单的读取保存好的行数即可,注意的是,当count()语句包含where条件时,两种表的操作是一样的。

Select查询速度

要想是一个较慢的select where更快,应首先检查是否能够增加一个索引,你可以使用explain语句来确定select语句使用那些索引。
为了帮助MySQL更好的优化查询,在一个装载数据后的表上运行 ANALYZE TABLE或myisamchk –analyze。这样为每一个索引更新指出有相同值得行的平均行数的值,(当然,如果只有一个索引,这总是1),Mysql采用这种方式来决定当你连接两个基于非常量表达式的表时,该采用哪个索引,你可以使用SHOW INDEX FROM tbl_name并检查cardinality值来检查表,分析结果

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

减少在Docker中使用MySQL内存的使用 减少在Docker中使用MySQL内存的使用 Mar 04, 2025 pm 03:52 PM

减少在Docker中使用MySQL内存的使用

如何使用Alter Table语句在MySQL中更改表? 如何使用Alter Table语句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

如何使用Alter Table语句在MySQL中更改表?

mysql无法打开共享库怎么解决 mysql无法打开共享库怎么解决 Mar 04, 2025 pm 04:01 PM

mysql无法打开共享库怎么解决

在 Linux 中运行 MySQl(有/没有带有 phpmyadmin 的 podman 容器) 在 Linux 中运行 MySQl(有/没有带有 phpmyadmin 的 podman 容器) Mar 04, 2025 pm 03:54 PM

在 Linux 中运行 MySQl(有/没有带有 phpmyadmin 的 podman 容器)

什么是 SQLite?全面概述 什么是 SQLite?全面概述 Mar 04, 2025 pm 03:55 PM

什么是 SQLite?全面概述

在MacOS上运行多个MySQL版本:逐步指南 在MacOS上运行多个MySQL版本:逐步指南 Mar 04, 2025 pm 03:49 PM

在MacOS上运行多个MySQL版本:逐步指南

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? 哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? Mar 21, 2025 pm 06:28 PM

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么?

如何为MySQL连接配置SSL/TLS加密? 如何为MySQL连接配置SSL/TLS加密? Mar 18, 2025 pm 12:01 PM

如何为MySQL连接配置SSL/TLS加密?

See all articles