mysql数据库sql语句调优、

mysql数据库sql语句调优、索引设计原则:索引列一般为where子句中的列或连接字句中的列尽量不对基数小的列做索引,如性别列尽可能使用短索引:如果对字符列索引尽量指定最小长度。(short Keys are better,Integer best)create index cityname on city(city(10));复合索引前缀特性,索引的顺序很重要。key(a,b,c)联合索引:可以走索引的组合:key(a),key(a,b ),key(a,b,c)下列索引无法走索引key(b),key(b,c),key(a,c)key(a,b)…where b=5 will not use index创建复合索引时应将最常用作限制条件列放在最左边,依次递减避免出现无用的索引。(很少使用或从未别调用)INNODB:尽量指定主键,最常用较短数据类型,唯一列做主键。尽量使用定长字符类型char,而不用varchar 对于索引的优化,当使用联合索引时,将常用的列在索引的左边,不常用的列,取其前部分字符,只要能精确查到它即可例如:create index d_a_p on ad_oldboy_detal(dateline,),ader(ader(20),pos(20));避免过度使用索引1.索引的建立对提高检索能力很有用,但是数据库维护它也很费资源。2.对性别列索引,被称为过度索引。只有两个值,建索引不仅没优势,还会影响到插入,更新速度,3,索引会占用磁盘空间,降低更新操作性能,,且执行计划要考虑各个索引4.索引不是越多越好。5行数比较少的表可以不建索引(100行以内)创建索引的语法 help create indexCREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type]index_col_name:Col_name:[(length)] [ASC|DESC]Phpadmin:ALTER TABLE `pw4_group_art` ADD INDEX(`tid`)create index pw4_group_art_tid on pw4_group_art(tid);删除索引语法drop INDEX ind_sage on student;复合索引及前N个字符索引例子集合;create index Sage_Sdet on student(sname,sage(100)查询一个语句,看他有没有走索引;explain select * from student where Sno=6只要key不为空,如果数据库有缓存,想测试速度,应该explain SQL_NO_CACHE* from uc_members where email="1234";查看表的唯一值多少,用distinct;select count(distinct Sage) from student;使用索引的条件1:索引列不能包含空值2:复合索引中只要有一列含有null值,那么这一列将不会使用索引3:列类型是字符串,要在where条件中吧字符值用引号括起来。4:用or分割开的条件,or前条件有索引,而后面列无索引,那么设计的索引都不会被用到5:条件不是索引列的第一部分5:like语句操作一般情况下尽量不使用like操作。like "%aaa%" 不会使用索引,而like,"aaa%"可以使用索引。可以建立fulltext或者sphinx(斯芬克司)6:不要在列上进行运算select * from users where YEAR(adddate)<2007;将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成select* from users where addate<‘2007-07-01’;7:不使用NOT IN 和<>操作NOT IN 和<>操作多不会使用索引将进行全表扫描,NOT IN 可以 NOT EXISTS代替,id<>3 则则可使用id>3orid<3来代替其他;尽量用连接查询代替子查询(嵌套查询)order by 的索引问题show processlist 查看线程show full processlistuptime在生产环境中如果是大表,创建索引会很耗费时间,也许需要几分钟,要把索引放在业务的低谷explian看看有没有走索引show processlist;在看看优化之后负载的变化优化的起因:1 网站出问题,很慢show full processlist—>2:慢查询语句(日志文件)grep slow my.cnf只要是long_query_time=1log-slow-queries=/data/3306/slow.log不要强求所有的列进行走索引让大表常用的列走索引,一般来说就可以了

一直觉得人应该去旅行,在年轻的时候,趁着有脾气装潇洒,

mysql数据库sql语句调优、

相关文章:

你感兴趣的文章:

标签云: