SQL语句技巧_索引的优化_慢查询日志开启_root密码的破解
1.正则表达式的使用 regexp
例:
select name,email from t where email regexp '@163[.,]com$'
使用like方式查询
selct name,email from t where email like '%@163.com' or email like '%@163,com'
2.巧用rand()提取随机行
select * from t3 order by rand() limit 3;
3.利用group by 的with rollup
使用group by 的with rollup子句可以检索出更多的分组聚合信息
注:with rollup 不可以和 order by 同时使用
select cname,pname,count(pname) from demo group by cname,pname with rollup;
4.用bit group functions 做统计
在使用group by 语句时可以同时使用bit_and,bit_or 函数来完成统计工作.这两个函数的作用主要是做数值之间的逻辑运算.
select id,bit_or(kind) from order_rab group by id
对order_rab表中的id分组时对kind做位与和或计算
select id,bit_and(kind) from order_rab group by id
-------------------------------------------------------
优化SQL语句的一般步骤
1.通过show status命令了解各种sql的执行频率
show [session|global] status;
其中: session(默认)表示当前连接
global 表示自数据库启动至今
show status;
show global status;
show status like 'Com_%';
show global status like 'Com_%';
参数说明:
com_select 执行select操作的次数,一次查询只累计加1
com_update 执行update操作的次数
com_insert 执行insert操作的次数,对批量插入只算一次
com_delete 执行delete操作的次数
针对Innodb存储引擎的
innodb_row_read 执行select操作的次数
innodb_row_updated 执行update操作的次数
innodb_row_inserted 执行insert操作的次数
innodb_row_deleted 执行delete操作的次数
其它:
connections 连接mysql的数量
uptime 服务器已经工作的秒数
slow_queries 慢查询的次数
mysql>show variables like '%long%'; 看到long_query_time的值就是默认慢查询记录的时间(秒)
2.定位执行效率较低的SQL语句 explain 或 desc
explain select * from table; 或
desc select * from table;
字段说明:
select_type:SIMPLE表示select类型,
type:range 表示表的连接类型,性能有好到差
system(表仅一行)
const()只一行匹配)
eq_ref 对于前面的每一行使用主键和唯一
...
3.使用like的查询,后面如果是常量并且只有%号不在第一个字符,索引才可能会被使用
explain select * from table where name like '%3'; 索引不会被使用
explain select * from table where name like '3%'; 使用
4.or 的前台条件字段都要加索引字段才会生效,否则整体不生效
5.查看索引使用情况
show status like 'Handler_read%';
Handler_read_key 这个值代表了一个行被索引值读的次数,
Handler_read_rnd_next 值高,则意叶着查询运行的低效.并且应该建立索引补救
6.慢查询日志
log_slow_queries=slow.log # 慢查询日志的路径
long_query_time=5 # 记录的时间
重启mysql服务
7.socket问题
有时候登陆mysql提示不能用socket登陆,此时可以换成tcp方式去登陆,但是必须要在php去用之前把这事情解决好
mysql -uroot -proot --protocol tcp -hlocalhost
8.root密码丢失破解
1.停止服务 pkill mysqld
#跳过授权表mysql.user和mysql.db这些表
2.mysqld_safe --skip-grant-tables --user=mysql &
3.mysql -uroot 回车
4.update user set password=password('root') where user='root' and host='localhost';
5.pkill mysqld
6.重启mysql服务
mysqld_safe --user=mysql &
SQL语句技巧_索引的优化_慢查询日志开启_root密码的破解的更多相关文章
- MYSQL SQL语句技巧初探(一)
MYSQL SQL语句技巧初探(一) 本文是我最近了解到的sql某些方法()组合实现一些功能的总结以后还会更新: rand与rand(n)实现提取随机行及order by原理的探讨. Bit_and, ...
- 为什么 SQL 语句使用了索引,但却还是慢查询?
一.索引与慢查询 聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引 CREATE ...
- mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)
mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...
- FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询
有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上). 巧用AsTable var sql = fsql.Select<UserX>() . ...
- MySQL优化之慢查询日志
慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能. 慢查询日志选项默认是关闭的, ...
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- Mysql sql语句技巧与优化
一.常见sql技巧 1.正则表达式的使用 2.巧用RAND()提取随机行 mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够吧数据随机排序, ...
- SQL语句技巧(上个样式太差了)
以下并非本人整理,但是看后感觉相当不错,特此分享. 1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分 ...
- SQL语句最基本的性能优化方法
有些人还不知道sql语句的基本性能优化方法,在此我简单提醒一下,最基本的优化方法: 1.检查是否缺少索引.调试的时候开启“包括实际的执行计划” 执行后会显示缺少的索引, 然后让dba帮助添 ...
随机推荐
- 行为识别笔记:improved dense trajectories算法(iDT算法)(转载)
iDT算法是行为识别领域中非常经典的一种算法,在深度学习应用于该领域前也是效果最好的算法.由INRIA的IEAR实验室于2013年发表于ICCV.目前基于深度学习的行为识别算法效果已经超过了iDT算法 ...
- c 函数及指针学习 4
1数组和指针声明的差别 声明数组:为数组分配内存,为数组名分配内存(指针常量 4个字节) 指针:为指针分配内存(指针变量 4个字节) 1 2 3 4 5 6 7 8 9 10 #include < ...
- 最大连续子序列和问题(Maximum Consecutive Subsequence Sum)
该算法的定义是:给出一个int序列,元素有正有负,找出其中的最大连续子序列的和. 例如:-2,11,-4,13,-5-2,:最大和为20(11,-4, 13). 怎么考虑这个问题呢? 要充分利用,连续 ...
- UVa 489 HangmanJudge --- 水题
UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜 ...
- hihoCoder#1107 : Shortest Proper Prefix (前缀树)
题目大意:在n个单词中,如果以s作为前缀的单词个数不超过5个,那么称s为proper prefix.如果s为proper prefix并且s的任何一个前缀(不包括s)都不是proper prefix, ...
- Java设计模式之责任链设计模式
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将所有处理对象连成一条链,并沿着这条链传递请求,直到有一个对象处理 ...
- 【C++11】30分钟了解C++11新特性
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 什么是C++11 C++11是曾经被叫做C+ ...
- T 恤
https://detail.tmall.com/item.htm?spm=a220o.1000855.1998025129.1.A6Zaol&id=528088614049&pvid ...
- Openjudge计算概论-奇数单增序列
/*===================================== 奇数单增序列 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个长度为N(不大于500)的正整数序列 ...
- wikioi 1076 排序 【这里含冒泡、选择、插入以及快排库函数的调用】
/*=================================================================== 1076 排序 题目描述 Description 给出n和n ...