mysql及优化
yunraodongpo
这个作者很懒,什么都没留下…
展开
-
not in与 id!=效率对比分析
not in的效率并不高,这个大家都知道,但还有比not in效率更不高的。今天查看慢查询记录文件,发现了一个神器的sql,具体写法就不说了,类似于这种:SELECT * from kills where id != '12323' and id != '13323' and id != '478732'当时我好奇心就来了,这种为毛不写成select * from kills wher原创 2015-08-11 10:31:44 · 6400 阅读 · 0 评论 -
centOS中mysql一些常用操作
安装mysqlyum -y install mysql-server修改mysql配置vi /etc/my.cnf 这里会有很多需要注意的配置项,后面会有专门的笔记暂时修改一下编码(添加在密码下方): default-character-set = utf8设置mysql随系统启动# chkconfig mysqld on ← 设置MySQL服务随系统启动自启动转载 2015-09-16 10:37:58 · 295 阅读 · 0 评论 -
sql优化《从thinkphp文档里转载过来的》
通常网站的性能瓶颈在数据库查询,如果你希望你的网站在一定阶段之内保持稳定,优化你的SQL和数据库是非常必要的一个优化环节。优化数据库是一个很大的话题,这里只是摘要一些比较关键的优化参考建议,并且需要具体分析项目的情况才能给出最合理的优化建议,所以具体的优化建议你应该咨询你公司的架构师或者DBA。下面是一部分比较重要的建议:1、选择正确的存储引擎以 MySQL为例,包括有两个存储引擎 M转载 2015-09-10 16:09:31 · 413 阅读 · 0 评论 -
当查询主键返回特定行的时候,用like还是等号
今天发现一个问题,以前从没有注意过的。就是当查询条件是id=某值的时候,用等号,不用like。因为等号速度非常之快,只有0.001S,而like则要执行0.123秒甚至更久。其中等号的时候,扫描了一行,用like,扫描了58万行之多,等于整表扫描了。同样,在有索引的非主键列上,用等号和用like对特定值进行查询,执行的效果竟然是同步的。然而,在联合索引(或者,也许这个主键重复率原创 2015-08-06 11:02:44 · 492 阅读 · 0 评论 -
mysql实现行转列的两个方式
两个方式,用任何一个都可以实现。1.用cross join的方式实现select * from (select sum(a.kills) '孙悟空' from kills1 as a LEFT JOIN tssrz as b on a.user_id = b.id WHERE b.user_name = '孙悟空' GROUP BY b.user_name)原创 2015-08-02 15:18:05 · 4380 阅读 · 0 评论 -
mysql慢查询日志
mysql有个慢查询日志功能,可以让查询时间比较长的sql语句记录下来,针对性的对其进行优化。方法如下:首先你要有个mysql数据库。开个玩笑。首先你要确认你的mysql是否开起来慢查询日志。show variables like 'long%'; 执行它,你会看到返回的结果集中有一个slow_query_log ON/OFF上面最右那两个只会出现一个,ON代表开启,O原创 2015-08-03 14:08:56 · 298 阅读 · 0 评论 -
mysql对ip地址的处理方法
原来我存ip就用varchar,查询慢,浪费空间自从用了mysql的函数对ip处理,诶,字符串变数字了,查询快了还不占空间了,一口气查十万条数据啊,不喘气儿客观且看:首先是ip地址转数字select inet_aton('255.255.255.255');只需要把这行数字用mysql黑窗口试一试,效果立竿见影。有兴趣玩的话也可以试试其他的ip。然后是数字转原创 2015-08-03 08:54:59 · 552 阅读 · 0 评论 -
mysql实现唯一序列号
需要用到事务处理和存储过程。不具备这方面基础的,要看一眼。一眼就可以。delimiter //create procedure dede(in p_in int)begin declare v_cnt int;declare v_timestr int;declare rowcount bigint;set v_timestr = DATE_FORMAT(NOW(),'原创 2015-08-02 18:45:06 · 3286 阅读 · 0 评论 -
mysql一个超级简单的事务
mysql的事务,只针对特定类型的表。比如你写:create table `t`(id int auto_increment not null, primary key(id)) ;执行回滚,是不操作的。比如你再写:create table `t`(id int auto_increment not null, primary key(id)) type=INNODB;某些版本这个原创 2015-08-02 16:15:28 · 493 阅读 · 0 评论 -
mysql添加索引的方法,及max()函数的优化
我有已kills表,里面有五十多万条数据,记录的是西游群英打怪的时间和数量。现在我想查单日打怪最多的记录是多少。我就写一个 select max(kills) from kills时间是多少呢?扫描了五十多万条记录后,这个数据就出来了,历时0.123S。这只是一个非常简单的查询,竟然耗时0.1秒还要多,简直不能忍。so,如果需要频繁读取这个数据,我们可以在这个字段上加个索引。CR原创 2015-08-01 17:16:41 · 3639 阅读 · 0 评论 -
mysql怎么清掉自增长的id
truncate语句,这货可以清空表中的内容,包括自增主键的信息。语法:TRUNCATE TABLE table1缘由,某天,测试数据添加了一堆,从新删掉再添加时候,发现id不从一开始了。作为强迫症的我完全不能忍啊。但drop表也太low了吧。就想到了这货,一试,还真。。。。行。原创 2015-07-31 14:51:38 · 431 阅读 · 0 评论 -
sql优化之加limit
当要查询的数据只有一条数据的时候,要加limit,为什么呢?SELECT * from kills where time1 = '2014-10-10' and user_id = 1当我知道,这句话只有一个查询结果的时候,我是不是应该写成这样呢?在这个sql的最后,我加上一个 limit 1 是不是显得很傻逼呢?我先运行了这个,时间是:0.113S。对了,数据库里有五十多万条数原创 2015-07-31 18:04:39 · 704 阅读 · 0 评论 -
MySQL数据库MyISAM和InnoDB存储引擎的比较
MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义;数据文件是MYD (MYData);索引文件是MYI (MYIndex)。InnoDB是事务型引转载 2015-08-11 15:45:28 · 194 阅读 · 0 评论 -
mysql服务启动慢甚至无法启动问题
前两天打开网站发现比较慢,就登陆服务器看了看cpu满了,然后查看进程,mysql占了百分之九十多就重启下mysql吧。发现服务启动的非常慢,且进行到最后无法启动去网上查了查,说是缓存太多的缘故一个是更改mysql缓存文件存放目录,一个是直接删缓存文件。我选择了删文件换个目录还是会很多,还是要删掉的。具体操作方法 点击开始-----运行-----cmd 回车输入:原创 2016-02-15 10:12:42 · 2565 阅读 · 0 评论