mysql
song2012
这个作者很懒,什么都没留下…
展开
-
MySQL索引使用技巧
1. 对于单键索引,尽量选择针对当前Query 过滤性更好的索引;2. 在选择组合索引的时候,当前Query 中过滤性最好的字段在索引字段顺序中排列越靠前越好;3. 在选择组合索引的时候,尽量选择可以能够包含当前Query 的WHERE 子句中更多字段的索引;4. 尽可能通过分析统计信息和调整Query 的写法来达到选择合适索引的目的而减少通过使用Hint 人为控制索引的选...原创 2012-10-22 10:55:20 · 67 阅读 · 0 评论 -
mysql探究之null与not null
相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问:1、我字段类型是not null,为什么我可以插入空值2、为毛not null的效率比null高3、判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from table where col...原创 2012-10-11 10:57:40 · 55 阅读 · 0 评论 -
mysql性能优化
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为查询...原创 2012-10-09 15:17:52 · 73 阅读 · 0 评论 -
mysql的快速去除重复记录的方法
ysql的快速去除重复记录的方法1.相当有用的一招,原文复制如下:不希望数据表中有重复记录的时候我们可以给表添加一个联合唯一索引例如,user表中有user_id,user_name两个字段,如果不希望有两条一摸一样的的user_id和user_name,我们可以给user表添加两个字段的联合唯一索引:alter table user add unique index(user...原创 2013-01-17 13:51:07 · 183 阅读 · 0 评论 -
Mysql之EXPLAIN显示using filesort
EXPLAIN 是mysql解释select查询的一个关键字,可以很方便的用于调试 语法格式如下 EXPLAIN tbl_name 或者: EXPLAIN SELECT select_options EXPLAIN 语句可以被当作 DESCRIBE 的同义词来用,也可以用来获取一个MySQL要执行的 SELECT 语句的相关信息。 EXPLAIN tbl_name 语法和 DESCRIBE t...原创 2013-03-29 17:23:26 · 174 阅读 · 0 评论 -
关于联合索引
注意:Index(Name,Age)表示在Name,Age两列上建立联合索引 由于索引对数据库的查询性能有着至关重要的影响,下面是我的一些总结和体会:一个查询一次只能使用一个索引:select name from user where name='plantegg' and age>35 , 如果Index(name); Index(age)的话,MySQL查询优化器会自动选择一个索引来使用...原创 2013-03-27 11:38:25 · 109 阅读 · 0 评论 -
FORCE INDEX/IGNORE INDEX
FORCE INDEX 通常用来对查询强制使用一个或者多个索引。 MySQL 通常会根据统计信息选择正确的索引,但是当查询优化器选择了错误的索引或者根本没有使用索引的时候,这个提示将非常有用。 IGNORE INDEX 提示会禁止查询优化器使用指定的索引。在具有多个索引的查询时,可以用来指定不需要优化器使用的那个索引,还可以在删除不必要的索引之前在查询中禁止使用该索引。 FORC...原创 2013-03-25 15:11:59 · 197 阅读 · 0 评论 -
mysql批量删除大量数据
假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM syslogs WHERE statusid=1 会发现删除失败,因为lock wait timeout exceed的错误。因为这条语句所涉及的记录数太多,因此我们通过LIMIT参数分批删除,比如每10000条进行一次删除,那...原创 2013-03-12 10:08:56 · 658 阅读 · 0 评论 -
MySQL 存储过程循环插入数据
DROP PROCEDURE IF EXISTS proc_buildata; CREATE PROCEDURE proc_buildata(IN loop_times INT) BEGIN DECLARE var INT DEFAULT 0; WHILE var<loop_times DO SET var=var+1; INSERT ...原创 2012-10-24 09:26:34 · 167 阅读 · 0 评论 -
使用GROUP_CONCAT语法
语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_courses,并填充...原创 2012-10-23 09:37:59 · 117 阅读 · 0 评论 -
MYSQL查询语句优化
MYSQL查询语句优化mysql的性能优化包罗甚广:索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等。这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录。查询的开销指标:执行时间检查的行数返回的行数...原创 2012-10-11 18:07:49 · 79 阅读 · 0 评论