mysql优化
1,优化查询缓存
查询是数据库技术中最常用的技术,查询操作的过程比较简单,首先从客户端发出的查询的sql语句,数据库服务端在接
收到由客户端发来的sql语句后,执行这条sql语句,然后将传的结果返回给客户端,虽然过程很简单,但不同的查询语句和和数据库的配置,对查询的性能将会有很大的影响。
通过查询缓冲提高查询的速度
一般我们使用sql语句进行查询时,数据库服务每次在收到客户端发来的sql后,都会执行这条sql语句,蛋在一定间隔内接受到完全一样的sq,也同样会执行它,虽然这样可以保证数据的实时性,但大多数时候数据并不要求实时,也就是可以有一定的延迟,所以在短时间内执行一条相同的sql语句就有些得不偿失。
我们可以通过在mysql安装目录中的my.ini设置查询缓冲,设置也非常简单,只需要将query_cache_type设置为1即可。
在设置了这个属性后,mysql在执行任何sql语句的时候都会在它的缓冲区查询是否执行过这条sql语句,如果有,就直接把查询结果返回给客户端。(mysql查询缓冲是区分大小写的,查询缓冲并不自动处理空格,所以应该减少空格的使用,尤其是sql首尾的空格)
在mysql5.0中提供了一种临时关机查询缓冲的方法:SELECT SQL_NO_CACHE field1, field2 FROM TABLE1 也可以将my.ini中的query_cache_type设置为2 这样只有在执行SQL_CACHE后才使用查询缓冲
Mysql缓冲命中
在检查缓冲的时候并不会队语句进行解析正则化或参数化,所以只要空格或注释稍微有点不一样他都会认为这是一条不同的查询语句传查询缓冲不会存储又不确定结果的查询。
查询必须是完全相同的才能够被认为是相同的。
2,用EXPLAIN使你的SELECT查询更加清晰
Explain关键字是一个mysql优化技巧,可以让你了解mysql正在进行什么查询操作,可以帮你发现瓶颈所在,并显示出查询或者表结构的问题出在了哪。Explain的查询结果,可以告诉你那些索引正在被使用。
3,使用limit 1取得唯一行
譬如在登录的时候我们只需要查询一条记录来判断用户是否存在,这种情况下我们可以在查询的sql后面加limit 1 这回让你的查询更有效 ,这样数据库索引在发现1以后会停止扫描,而不是去扫描整个表或索引。
4,建立索引
1,普通索引
这是最基本的索引,无任何限制
2,唯一索引
他与普通索引一样,但索引列的值必须唯一,可以为空
3,主键索引
他是一种特殊的唯一索引,在创建表的时候创建主减索引
4,组合索引
可以把给多个字段创建到一个索引里,在查询的时候,mysql会用到它认为效率最的 那个单列索引
5,全文索引
一种特殊的索引,他会把某个数据列出现过的所有单词生成一份清单(myisam)
它只会在MyISAM表中创建,而且少于3个字符的单词并不会被包含在全文索引里边,但是可以通过my.ini修改选项
6,外键索引
只有InnoDB支持外键索引,必须建立外键索引
前台禁用关联查询