Category - DB

数据库MySQL优化的一些步骤

By Lee - 星期日, 六月 16, 2013
下面是数据库MySQL优化的一些步骤

一、通过show status和应用特点了解各种SQL的执行频率

通过SHOW STATUS可以提供服务器状态信息,也可以使用mysqladmin extended-status命令获得。SHOW STATUS可以根据需要显示session级别的统计结果和global级别的统计结果。
以下几个参数对Myisam和Innodb存储引擎都计数:
1.Com_select  执行select操作的次数,一次查询只累加1;
2.Com_insert 执行insert操作的次数,对于批量插入的insert操作,只累加一次;
3.Com_update 执行update操作的次数;
4.Com_delete 执行delete操作的次数;
...

left join、right join、inner join的区别

By Lee - 星期四, 六月 6, 2013
SQL 面试题目:left join、right join、inner join的区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录,和left join的刚好相反

inner join(等值连接) 只返回两个表中联结字段相等的行

SQL 面试题目及答案

By Lee - 星期五, 五月 31, 2013

学生成绩表(stuscore):
姓名:name     课程:subject     分数:score     学号:stuid
张三     数学     89     1
张三     语文     80     1
张三     英语     70     1
李四     数学     90     2
李四     语文     70     2
李四     英语     80     2 ...

数据库优化:优化查询

By Lee - 星期二, 五月 21, 2013
数据库优化的目标无非是避免磁盘I/O瓶颈、减少CPU利用率和减少资源竞争。

查询优化规则:在访问数据库表的数据(Access Data)时,要尽可能避免排序(Sort)、连接(Join)和相关子查询*作。经验告诉我们,在优化查询时,必须做到: 
① 尽可能少的行; 
② 避免排序或为尽可能少的行排序,若要做大量数据排序,最好将相关数据放在临时表中*作;用简单的键(列)排序,如整型或短字符串排序; 
③ 避免表内的相关子查询; 
④ 避免在Where子句中使用复杂的表达式或非起始的子字符串、用长字符串连接; 
⑤ 在Where子句中多使用“与”(And)连接,少使用“或”(Or)连接; 
⑥ 利用临时数据库。在查询多表、有多个连接、查询复杂、数据要过滤时,可以建临时表(索引)以减少I/O。但缺点是增加了空间开销。 
除非每个列都有索引支持,否则在有连接的查询时分别找出两个动态索引,放在工作表中重新排序。 ...