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密码的破解的更多相关文章

  1. MYSQL SQL语句技巧初探(一)

    MYSQL SQL语句技巧初探(一) 本文是我最近了解到的sql某些方法()组合实现一些功能的总结以后还会更新: rand与rand(n)实现提取随机行及order by原理的探讨. Bit_and, ...

  2. 为什么 SQL 语句使用了索引,但却还是慢查询?

    一.索引与慢查询 聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引 CREATE ...

  3. mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)

    mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...

  4. FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询

    有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上). 巧用AsTable var sql = fsql.Select<UserX>() . ...

  5. MySQL优化之慢查询日志

    慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能. 慢查询日志选项默认是关闭的, ...

  6. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  7. Mysql sql语句技巧与优化

    一.常见sql技巧 1.正则表达式的使用 2.巧用RAND()提取随机行 mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够吧数据随机排序, ...

  8. SQL语句技巧(上个样式太差了)

      以下并非本人整理,但是看后感觉相当不错,特此分享. 1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分 ...

  9. SQL语句最基本的性能优化方法

    有些人还不知道sql语句的基本性能优化方法,在此我简单提醒一下,最基本的优化方法:   1.检查是否缺少索引.调试的时候开启“包括实际的执行计划”   执行后会显示缺少的索引,   然后让dba帮助添 ...

随机推荐

  1. Codeforces Round #373 (Div. 2) A B C 水 贪心 模拟(四舍五入进位)

    A. Vitya in the Countryside time limit per test 1 second memory limit per test 256 megabytes input s ...

  2. SQL根据现有表新建一张表

    SQL根据现有表新建表,新建的这张表结构要跟现有表结构相同,但不要现有表里面的数据! 执行DML语句依据数据库类型而定: SQLITE -----复制表结构及数据到新表 CREATE TABLE TA ...

  3. bootstrap-3

    段落: 1.全局文本字号为14px(font-size); 2.行高为1.42857143(line-height),大约是20px(一串数字是由less编译器计算出来的,当然sass也有这样的功能) ...

  4. spring ioc 原理 spring aop原理

    大家一直都说spring的IOC如何如何的强大,其实我倒觉得不是IOC如何的强大,说白了IOC其实也非常的简单.我们先从IOC说起,这个概念其实是从我们平常new一个对象的对立面来说的,我们平常使用对 ...

  5. JS初学之-效果没出来怎么办?-alert函数测试

    一般出了问题之后,有经验的高手一眼就可以看出来,但是对于我们初学者来说,利用alert函数不失为一个好方法. 这时我们要利用逐行测试的方法,在任意一句代码下加alert,如果可以弹出来就说明上面的没有 ...

  6. 20145220java程序设计第九周学习总结

    20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...

  7. 只显示 前100个字 java 实现截取字符串!使用! <c:if test="${fn:length(onebeans.info)>100 }">${ fn:substri

    博客 文章 只显示 前100个字 java 实现截取字符串!使用! <c:if test="${fn:length(onebeans.info)>100 }">$ ...

  8. C# 大于屏幕的窗体

    1.使用SetWindowPos就可以做到这一点,只是最后一个参数要选对. RECT windowRect = new RECT(); User32.GetWindowRect(MyForm2.Han ...

  9. ABBYY PDF Transformer+从文件选项中创建PDF文档的教程

    可使用OCR文字识别软件ABBYY PDF Transformer+从Microsoft Word.Microsoft Excel.Microsoft PowerPoint.HTML.RTF.Micr ...

  10. docker nodejs 基本应用

    1. 安装docker 环境 2. nodejs  应用布局 package.json { "name": "docker-centos-hello", &qu ...