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帮助添 ...
随机推荐
- 2015GitWebRTC编译实录6
2015.07.20 libbitrate_controller 编译通过依赖system_wrappers lib,编写测试代码时需要注意.[425/1600 ] CXX obj /webrtc/m ...
- Codeforces Round #150 (Div. 2)
A. Dividing Orange 模拟. B. Undoubtedly Lucky Numbers 暴力枚举\(x.y\). C. The Brand New Function 固定左端点,右端点 ...
- 第3章 rpm命令管理
3-1 RPM包命名规则 3-2 安装命令 3-3 升级与卸载 3-4 RPM包查询 3-5 RPM包校验
- HDU 2085 核反应堆 --- 简单递推
HDU 2085 核反应堆 /* HDU 2085 核反应堆 --- 简单递推 */ #include <cstdio> ; long long a[N], b[N]; //a表示高能质点 ...
- PHP防止页面刷新、重复提交数据
PHP防止页面刷新.重复提交数据 (2011-12-09 16:52:45) 转载▼ 标签: it 分类: php技术相关 闲来无事看了一下php session ,又在网上看了防止页面刷新重复提交数 ...
- 使用Metasploit进行端口扫描
Metasploit中不仅能够使用第三方扫描器Nmap等,在其辅助模块中也包含了几款内建的端口扫描器. 查看Metasploit框架提供的端口扫描工具: msf > search portsca ...
- Flash pixel Bender学习笔记
pixel Bender是指用来创建,编译,测试和导出pixel shader,用于各种flash产品的一个IDE. Pixel Bender是Adobe推出的一个高性能的图像视频处理技术.它能跨平台 ...
- 使用 margin 让div块内容居中
问:有一个div块,其width为300px,如何设置margin让div块居中显示? 答:margin设置为 margin:0 auto,即div块的上下外边距设置为 0 , 左右外边距设置为 自动 ...
- C# 二维list
public class ValueList : List<double> { public ValueList() { } } public ValueList[] valListArr ...
- cookies的理解
设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId=828"; 如果 ...