设为首页 加入收藏

TOP

MySQL性能优化(二)(三)
2015-07-24 11:08:14 来源: 作者: 【 】 浏览:6
Tags:MySQL 性能 优化
de); *注意:innodb类型的表支持外键,myisam类型的表,虽能创建外键可以成功,但是不起作用,主要原因是不支持外键。 六:MySQL中help的使用 在MySQL中有很多命令如果不记得,要使用MySQL的提示下的操作也就是 ?: 1:?% 可以获得多有的MySQL里面的命令,这个事最多的,建议不使用下面 2:?create 3:?opti% 以为记不住optimize的全称,这个时候可以用%来代替 4:?reg% 获取了记不住的regexp的用法 5:? contents; 查看所有帮助信息 -> 可以得到所有的帮助大纲,通过这个目录在用?继续往下细查 比如:?contents; ? functions; 查看所有的函数,就是?contents得出来的functions ? string funtions; ....... =============================================================================================================================== 3.SQL语句优化 一:优化SQL语句的一般步骤 1:通过show status命令了解各种SQL的执行频率 格式:show session|global status; session:(默认)表示当前连接 global:表示自数据库启动至今 show status; show global status; show status like 'Com_%'; --一般只差以Com开头的东西 show global status like 'Com_%'; 重点跟踪这几个值(登入以来,所有的操作都会有记载): show status like "Com_insert%"; --查看到:总共插了多少条 insert_select方式插入使用了几次 show status like "Com_select%"; --登入以来,插入了几次 show status like "Com_update%"; show status like "Com_delete%"; 只针对于innoDB存储引擎的(记载的是影响行数): SQL:show status like "innodb_rows%"; --就可以查看到下面的内容 InnoDB_rows_read执行select操作的次数 InnoDB_rows_updated执行update操作的次数 InnoDB_rows_inserted执行insert操作的次数 InnoDB_rows_deleted执行delete操作的次数 其他: sql: show status like "connections"; connections 链接MySQL的数量(包括你链接成功或不成功都会记载) Uptime 服务器已经工作的秒伤 Slow_queries 慢查询次数 show variables like "%slow%"; 查看是否开启慢查询 OFF关闭(默认慢查询文件等详细信息) show variables like "%long%"; 查看默认慢查询的时间默认是10s *2:定位执行效率较低的语句(解析sql) 可以查出:有没有用索引啊 单表查还是多表查 还是嵌套查询啊。。。,看这几个值既能分析出来 *重点查看的是 row:8 影响行数 ref:null 如果你表建立的所有,ref会推荐你使用什么索引 explain select * from tables where id=10 \G; 可以用 \G排下 desc select * from tables where id=10; 二:索引问题 索引是数据库优化中最常见也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题。 1:索引的存储分类 MyISam存储引擎的表的数据和索引是自动分开存储的,各自是独立的一个文件(3个文件 frm-表结构文件 d-数据文件 i-索引文件) InnoDB存储引擎的表数据和索引是存储在同一个表空间里面的,但可以有多个文件组成(默认是共享表空间,所以是同一个文件) MySQL目前不支持函数索引,但是能对列的前面某一部分进行索引,例如name字段,可以只取name的前4个字符进行索引, 这个特性可以大大缩小索引文件的大小,用户在设计表结构的时候也可以对文本列根据此特性进行灵活设计。 SQL:create index ind_company2_name on company(name(4));--其中company表名ind_company2_name索引名 且 针对name4个字符进行索引 2:MySQL如何使用索引 索引用于快速查找在某个列中有一特定值的行。对相关列使用索引是提高select操作性能的最佳途径。 一:使用索引: (1):对于创建的多列索引,只要查询的条件中用到左边的列,索引一般就会被使用。 如下创建个复合索引: create index ind_sales2_com_mon on sales2(commpany_id,moneys); 能后按company_id进行查询,发现使用到了复合索引 explain select * from sales2 where commpany_id=100 \G; 使用下面的查询就没有使用到复合索引 explain select * from sales2 where moneys=1 \G; (2):like使用索引要注意,有时候用不上看你like是怎么写的,%号放后面就可以用上索引 索引什么时候用不上(已经建了索引sql时候没用上) 使用like的查询,后面如果是常量并且只有%号不在第一个字符,索引才可能会被使用,如下: explain select * from commpany2 where name like "%3%" \G; --没用上 explain select * from commpany2 where name like "3%%" \G; --用上啦 (3):如果对大额文本进行搜索,使用全文索引而不使用like"%...%"; (4):如果列名是索引,使用column_name is null将使用索引,如下: explain select * from commpany2 where name is nul
首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇JDBC对MySQL数据库存储过程的调用 下一篇mysql基本总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 Python 进行数据 (2025-12-25 15:49:09)
·如何学习Python数据 (2025-12-25 15:49:07)
·利用Python进行数据 (2025-12-25 15:49:04)
·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)