
举个例子:
select id from temp where id in (select id from temp1 where id>1000)
这个查询在数据量大时是相当慢的,因为mysql把in里的select当成相关的语句从外到内执行查询,而不是从内到外。
我们可通过临时表来让mysql先执行里面的查询,从而避免巨大的性能开销。
select id from temp where id in (select id from (select id from temp1 where id>1000) as temp3)
其实我们在生产环境中因尽量少使用嵌套查询,尤其是WHERE...IN() 和 WHERE...NOT IN语句。
注:
mysql where是从左向右来执行的,筛选......
作者: owoer
|
发表于:2015年12月21日
|
栏目:MySQL
|
mysql嵌套查询in的优化,where执行顺序已关闭评论
阅读全文

配置mysql的replication模式
1. 设置master
(1) 修改配置文件
# vim /etc/my.cnf
在[mysqld]部分添加
server-id=1
log-bin=mysql-bin
binlog-do-db=test(表示test数据库)
改完后重启mysqld服务
# service mysqld restart
(2) 设置mysql数据库的root访问密码
# mysqladmin -u root password ‘123456’
# mysql -u root -p 输入密码‘123456’登陆mysql
mysql> grant replication slave on *.* to ‘root’@’192.168.2.*’ identified
by ‘123456’;
说明:这里的root是为slave端设置的......

检测mysql中sql语句的效率的方法
1、通过查询日志
开启MySQL慢查询
Windows中的配置文件一般是my.ini,Linux在etc/my.cnf
在[mysqld]下面加
log-slow-queries = log/mysqlslowquery.log
long_query_time =1
slow_query_log_file=/tmp/slow.log
2、mysqldumpslow命令
命令参数说明:
-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的
记录数来排序,ac、at、al、ar,表示相应的倒叙;
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感的;
例子:
my......

set @x1=114.172668;
set @y1=22.314825;
set @dist=100;
SELECT X(locgeo_baidu),Y(locgeo_baidu),AsText(locgeo_baidu),
ROUND(
6378.138*2*ASIN(
SQRT(
POW(SIN((@y1*PI()/180-Y(locgeo_baidu)*PI()/180)/2),2)
+COS(@y1*PI()/180)
*COS(Y(locgeo_baidu)*PI()/180)
*POW(SIN((@x1*PI()/180-X(locgeo_baidu)*PI()/180)/2),2)
)
)*1000
)AS distance
from wfgeoloc where locgeo_baidu!=''
having distance<@dist
ORDER BY distance asc
参考php:http://www.cnblogs.com/wangqishu/p/38......

关闭mysql服务:
service mysqld stop
转移mysql数据目录
mv /var/lib/mysql/ /data/
编辑my.cnf
vi /etc/my.cnf
修改其中的datadir和socket到新的路径
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
service mysqld start
但是尽管启动服务没有问题,但是通过mysql客户端连接的时候却报错:
[root@hostXXX data]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
原因是无法通过socket文件/var/lib/......
作者: owoer
|
发表于:2015年7月18日
|
栏目:MySQL
|
mysql转移数据报ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)已关闭评论
阅读全文