您好,欢迎光临! 推荐您使用Chrome浏览器访问本站。

mysql嵌套查询in的优化,where执行顺序

667 views
mysql嵌套查询in的优化,where执行顺序举个例子: 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是从左向右来执行的,筛选......

MySQL主从同步备份

659 views
MySQL主从同步备份配置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慢查询

626 views
记录mysql慢查询检测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......

mysql(php)根据一个坐标求得与数据库中其他坐标的距离

655 views
mysql(php)根据一个坐标求得与数据库中其他坐标的距离 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转移数据报ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

819 views
mysql转移数据报ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)关闭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/......