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
alter table tb add col2 varchar(10)
MSSQL2000
alter table tb add col2 varchar(10)
修改字段:
MYSQL
alter table tb modify col2 varchar(20)
MSSQL2000
alter table tb alter column col2 varchar(20)
删除字段:
MYSQL
alter table tb drop column col ......
安装后MYSQL5后,发现启动出错.
出错代码:1067
解决办法如下:
删除%windows%/my.ini
删除其它地方的my.ini
在mysql安装目录下把my-small.ini复制为my.ini
在my.ini最后一行插入:
CODE:
[mysqld]
#设置basedir指向mysql的安装路径
basedir=C:\mysql-5.1.11-beta-win32
datadir=C:\mysql-5.1.11-beta-win32\dat ......
首先你要理解,innodb的主键索引都是聚簇索引,它的辅助索引里面都包含有表的主键,而且主键都在辅助索引的最后一列.而myisam的索引,都是普通索引,存储的是列的值,还有列在原表中的地址值---不存储主键值.
好了,下面我们开始:
先创建两个表:一个是innodb引擎的,一个是myisam引擎的
CREATE TABLE `innodb` ( `id` in ......
$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服务器的配置参数,可以提高MySQL数据库的性能,但是对于配置较低的服务器来说,你无论怎么优化配置,都不会得到理想的效果,那就只能提高你硬件配置,来彻底有效地改善服务器的性能。
具体的方法如下:
一、在设置MySQL 时,应该配置其使用静态库而不是共享库。使用共享库的动态二进制系统可节省磁盘空间,但静 ......