mysql性能优化2
MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示:
DELETE from customerinfo
WHERE CustomerID NOT in (SELECT CustomerID from salesinfo )
使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:
SELECT * from customerinfo
WHERE CustomerID NOT in (SELECT CustomerID from salesinfo )
如果使用连接(JOIN).. 来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好,查询如下:
SELECT * from customerinfo
LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.
CustomerID
WHERE salesinfo.CustomerID IS NULL
相关文档:
首先设置mysql的编码为utf8
在linux下修改3个my.cnf的1个/etc/mysql
/my.cnf文件
找到客户端配置[client] 在下面添加
default-character-set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 默认字符集为utf8
init_connect='SET NAMES utf8' (设定连接mysql
数据库时使用utf8编码,以让 ......
一种表驱动,除了innodb还有其它的,例如isam,myisam等.
innodb的特色在于支持并发与表间引用
MySQL支持多种存储引擎,用户可以方便的选用不同的存储引擎来支持自己的应用,每种不同的存储引擎都有其自己的特性
Innodb是其中的一种存储引擎,它的特性是支持事务,并且采用多版本并发控制的方式来提高并发度
主要 ......
$sudo nano /etc/apparmor.d/usr.sbin.mysqld
在gedit中找到/var/lib/mysql/这两行,注释掉这两行,在这两行前分别添加一个符号“#”即可注释,在这两行之前或
之后加上下面内容:
/home/mysql/ r,
/home/mysql/** rwk,
保存后退出,执行命令:
$sudo /etc/init.d/apparmor reload
返回Reloading AppArmo ......
安裝MySQL-Server
$ sudo apt-get install mysql-server
安裝Apache HTTP Server
$ sudo apt-get install apache2
安裝PHP for Apache HTTP Server
$ sudo apt-get install php5
安裝MySQL for Apache HTTP Server
$ sudo apt-get install libapache2-mod-auth-mysql
$ sudo apt-get ......