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帮助添 ...
随机推荐
- windows下apache及mysql定时自动重启设置
有时候觉得,服务器运行时间过长,造成服务器内存等压力过大.因此,不用重新启动服务器的情况下,完成apache和mysql的内存释放,是非常有益处的(把重启时间设置在访问量最低的).首先,apache的 ...
- smartUpload组件文件上传
public class SmartUploadServlet extends HttpServlet { public void doGet(HttpServletRequest request, ...
- Apache配置站点根目录、用户目录及页面访问属性
一.配置站点根目录及页面访问属性 DocumentRoot "/www/htdoc" <Directory "/www/htdoc"> Option ...
- URAL 1291 Gear-wheels(BFS)
Gear-wheels Time limit: 1.0 secondMemory limit: 64 MB - Arny! What happened with coordinator? Bad wo ...
- HTTP 状态消息
1xx: 信息 消息: 描述: 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求. 101 Switching Protocols 服务器 ...
- Java——多线程安全问题
静态代码块中没有this /* * 线程安全问题产生的原因: * 1.多个线程操作共享的数据 * 2.操作共享数据的线程代码有多条 * * 当一个线程在执行操作共享数据的多条代码过程中,其他线程 ...
- Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码
一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...
- Python3字典中items()和python2.x中iteritems()有什么区别
在Python2.x中,items( )用于 返回一个字典的拷贝列表[Returns a copy of the list of all items (key/value pairs) in D],占 ...
- javascript面向对象规则汇总以及json
javascript中一切皆对象,而且定义非常灵活, 于是出现了一些相对其他编程语言环境下匪夷所思的代码: ---------------------------------------------- ...
- 《Python自然语言处理》中文版-纠错【更新中。。。】
最近在看<Python自然语言处理>中文版这本书,可能由于是从py2.x到py3.x,加上nltk的更新的原因,或者作者的一些笔误,在书中很多代码都运行不能通过,下面我就整理一下一点有问题 ...