GVKun编程网logo

mysql 查询优化技巧(mysql查询优化方法)

4

在本文中,我们将给您介绍关于mysql查询优化技巧的详细内容,并且为您解答mysql查询优化方法的相关问题,此外,我们还将为您提供关于Can''tconnecttolocalMySQLserverth

在本文中,我们将给您介绍关于mysql 查询优化技巧的详细内容,并且为您解答mysql查询优化方法的相关问题,此外,我们还将为您提供关于Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)、Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''、CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?的知识。

本文目录一览:

mysql 查询优化技巧(mysql查询优化方法)

mysql 查询优化技巧(mysql查询优化方法)

查询使用索引相关

1, 避免在 sql 的 where 条件中使用 函数,会导致索引失效

2, join 两个表时,如果关联字段数据类型不一致,请使用类型转换函数。

3, sql 中的条件值必须与字段类型一致, 避免数据库做隐式类型转换,导致索引失效 (数据类型禁止加引号,字符串必须加引号).

4, 避免使用 左模糊 ( like ''%xxx'' ), 全模糊查询。 尽量 使用 右模糊查询,可以走索引。

5, join , in , not in , exists , not exists 性能比较

A, 字段上有索引: exists(好) -- in 差-- join 最差

B, 字段上无索引 : join 好 -- exists 差 -- in 最差

C, 字段上有索引 : left join 好--- not exists 差 -- not in 最差

D, 字段上无索引 : not in 好 --- not exists 差 -- left join 最差

6, 尽量不要使用 反向查询, 例如 not in , != , not like 它们不走索引

7, 尽量不要or , 不走索引 , 如果可以用 in 代替, in 元素个数要严格控制, 防止 超额,建议 最大不超过 200

8, 日期字段查询统一使用 这种格式的字符串 "yyyy-MM-dd HH:mm:ss" ; mysql 的日期类型与字符类型相同的,不需要做额外的类型转换。 比如 select id where time >=''2010-01-10 01:10:20''

9, 避免多于排序:使用 group by 时,数据库默认是会进行排序操作的,如果 不需要,可以使用 group by NULL 避免数据库排序(提升查询效率和 减少资源开销) select id form user group by name order by NULL ;

  1. 业务程序禁止使用 存储过程, 触发器,函数,作业和视图等, 一些特殊日期, 聚合等函数除外。

11, 尽量使用 join 连接查询 代替子查询

12, 所有内连接, 需将 关联表统一写到 from 子句中,关联条件和过滤条件统一写到 where 子句中

13, 外连接都用 left join ,不用 right join

  1. 多表连接的分页语句,如果 过滤条件在单个表上, 需要先分页再 join 连接 比如 : select a.name ,b.id from ( select id,name from user where id>100 order by id limit 0,10 ) a inner join shop b where a.id = b.id;

  2. 在 iBatis 中,尽量不要使用 $name$ , 应该采用 #name# 防止sql注入

  3. inser into 语句也必须指定具体字段名称。 禁止写成 insert into user values(...)

  4. SQL 中 尽量避免出现 now() , rand() , sysdate() , current_user() 等不确定结果的函数

  5. 禁止用 select for update 语法

其他知识

1, insert ignore into 当 插入 数据时,如出现错误,重复数据, 将不返回错误,只以经过形式返回。所以使用 ignore 请确保语句本身没有问题,否则也会被忽略掉 比如:

insert ignore into books(name) valuse (''xxx'');


2, on duplicate key update 当 primary 或者 unique 重复时, 则执行 update 语句,在原有记录基础上,更新指定字段内容, 其他字段内容保留,如果 update 后为无用语句,如id =id ,错误不会被忽略,为了实现 name 重复的数据插入不报错,可使用 下语句:

insert into books(name) values ''xxx'' 
on duplicate key update id=id ;

3, insert ... select ... where not exist 根据 select 的条件判断是否插入, 可以不光通过 primary 和 unique来判断, 也可以通过其他条件

insert into books(name) 
select id  from dual where 
not exists (select id from books where id=1)

4, replace into 如果存在 primary or unique 相同的记录, 则先删除再插入新的记录。 如果记录有多个字段,在插入的时候如果有的字段 没有赋值,那么新插入的记录字段为空

replace into books select 1 from books
  1. 大表一般用distinct效率不高,大数据量的时候都禁止用distinct,建议用group by解决重复问题。

以上 来自 书籍 BAT 公司员工的MYSQL 修为

Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)

Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)

ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)

 

 

 

原因:系统盘满了

[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 17G 0 100% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 477M 80M 372M 18% /boot
[root@localhost opt]#

解决:

删除大文件后,重启系统解决

 

 

[root@localhost mysql]# /opt/lampp/lampp status
Version: XAMPP for Linux 1.8.3-3
Apache is not running.
MySQL is not running.
ProFTPD is running.

 

df: 未处理文件系统
[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 17G 0 100% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 477M 80M 372M 18% /boot
[root@localhost opt]#

 

 

[root@localhost ~]# /opt/lampp/lampp status
Version: XAMPP for Linux 1.8.3-3
Apache is not running.
MySQL is running.
ProFTPD is running.

 

 

 

xampp 无法启动mysql 找不到mysql.sock

  (2016-02-24 23:21:24)
转载
  分类: 技术
出现的问题:
如果xampp中的mysql启动不了,出现ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)报错,
停止xampp的时候报:
-bash-4.1# /opt/lampp/lampp stop
Stopping XAMPP for Linux 1.8.2-6...
XAMPP: Stopping Apache...ok.
XAMPP: Stopping MySQL...ok.
XAMPP: Stopping ProFTPD...kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
fail.

解决办法:
如果网上一些方法不好用的话,可以试试以下方法:
1. 确定系统盘是否满了
#df -h
2. 删除/opt/lampp目录中的pid文件(删掉后xampp重启时会重建,如果不放心,可以先备份lampp目录)
删除mysql相关缓存:
#rm -rf /opt/lampp/var/mysql/VM_*  
删除proftp相关缓存:
#rm -rf /opt/lampp/var/proftpd.pid
如果找不到pid文件,可以搜一下:
#find /opt/lampp -name ''*.pid''

 

Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''

Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''

MySQL已经被我移到数据盘了,本地连接数据库会报错:Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''

但是远程是可以连接的,my.cnf设置mysql的根目录也改成了数据盘的地址,还要在加上client的参数,设置如下:

[client]
socket = /home/data/mysql/mysql.sock

之后重启下mysql就可以了

CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

亲,是不是忘记了开MysqL服务,service MysqLd start

centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?

centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?

centos7 设置 mysql 自启动的配置文件中

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

这里的

[Service]

User=mysql

Group=mysql,

user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?还是其他呢?

今天的关于mysql 查询优化技巧mysql查询优化方法的分享已经结束,谢谢您的关注,如果想了解更多关于Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)、Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''、CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?的相关知识,请在本站进行查询。

本文标签: