随笔分类 -  MySQL

MySQL
mysql 'OR','IN',‘union’效率分析
摘要:1、EXPLAIN (SELECT * FROM m_news WHERE TYPES = 5 )UNION (SELECT * FROM m_news WHERE TYPES = 10 );2、EXPLAIN SELECT * FROM m_news WHERE TYPES = 5 OR TYPES =10;3、EXPLAIN SELECT * FROM m_news WHERE TYPES IN (5,10);结论:从影响行数来说,用'or'和‘in’ 效果是一样的,‘union’效率高很多。 阅读全文

posted @ 2012-04-09 12:29 小伍BLOG 阅读(1324) 评论(0) 推荐(0)

悲剧的Mysql 居然 0 = ‘’
摘要:CREATE TABLE `test_int` ( `id` int(1) NOT NULL auto_increment, `b` int(11) default NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB insert into `test_int`(`id`,`b`) values (1,1),(2,0);-- 测试结果SELECT * FROM test_int WHERE b = '' ;-- 居然能把 id=2的查出来。-- 测试结果SELECT * FROM test_int WHERE b = '' AND b 阅读全文

posted @ 2011-11-02 11:12 小伍BLOG 阅读(538) 评论(0) 推荐(0)

mysql存储过程学习
摘要:# 创建一个名为procedure_test 存储过程。DELIMITER $$CREATE PROCEDURE `test`.`procedure_test`() BEGIN SELECT * FROM blogs; END$$DELIMITER ;#调用存储过程CALL procedure_test(); #删除存储过程DROP PROCEDURE procedure_test; #输出变量DELIMITER $$CREATE PROCEDURE `test`.`procedure_test2`( OUT pl DECIMAL(8,2), #输出参数1 OUT ph... 阅读全文

posted @ 2011-10-21 11:55 小伍BLOG 阅读(205) 评论(0) 推荐(0)

mysql 事物引发的悲剧
摘要:mysql 事物引发的悲剧今天做东西,发现数据更新后,但是查询的数据都是一样,原来数据都没有commit 。查询到的数据都是 commit之前的数据。切忌,避免悲剧再次发生 阅读全文

posted @ 2011-09-27 13:07 小伍BLOG 阅读(164) 评论(0) 推荐(0)

10w级别的mysql数据插入
摘要:几天前做了一个短信发送东东,一次性要插入10w以上的手机号码。我的个天啊。开始没想到,这10w的数据一个号码一个号码的插入半个小时才2w。后来改进一条SQL批量插入-- 优化代码之前的insert into table(mobile) values (138000000);insert into table(mobile) values (138000000);insert into table(mobile) values (138000000);……-- 优化之后的insert into table(mobile) values (138000000), (138000000), (138 阅读全文

posted @ 2011-07-28 09:07 小伍BLOG 阅读(1603) 评论(5) 推荐(1)

Mysql日期和时间函数大全
摘要:对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。 这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。 mysql> select WEEKDAY( 阅读全文

posted @ 2011-06-10 09:12 小伍BLOG 阅读(275) 评论(0) 推荐(0)

mysql 今天遇到一个神马情况
摘要:SELECT RIGHT(`goods_sn`, 3) FROM goods WHERE brand_id = ".intval($arr_rs[3])."order by goods_id desc LIMIT 1#很高兴的情况,$arr_rs[3]直接从CSV中读取的。本来直接用的没问题,上到服务器中去测试,报语法错误#百思不得其解,神马呀。。。后来做了一下 intval转换了, 读的$arr_rs[3]数据也做过trim#以后写东西多注意,不能偷懒。 阅读全文

posted @ 2011-05-31 15:56 小伍BLOG 阅读(217) 评论(0) 推荐(0)

mysql函数之——GROUP_CONCAT(转)
摘要:内容来自mysql手册,事例为手册中编者所加 GROUP_CONCAT(expr) 完整句法如下: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]][SEPARATOR str_val])这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成: mysql> SELECT student_name,-> GROUP_CONCAT(test_score)-> 阅读全文

posted @ 2011-03-12 23:29 小伍BLOG 阅读(771) 评论(0) 推荐(0)

一道SQL题目,效率提高一个数量级
摘要:有一张表order(orderid,userid,amount),写一条查询语句,取出所有消费总额超过100的用户的所有订单号orderid。#本人开始是这样想的SELECT aa.userid,aa.orderid,aa.amount FROM `order` aa LEFT JOIN (SELECT SUM(amount) AS amount,userid FROM `order` GROUP BY `userid`) tt ON tt.userid = aa.userid AND tt.amount > 100#看了高人的写法,效率提高一个数量级,表只需要遍历一次SELECT us 阅读全文

posted @ 2011-03-12 23:02 小伍BLOG 阅读(275) 评论(0) 推荐(0)

同样一条语句,不同写法效率高10倍
摘要:#查询自2010-12-1 到 2011-2-28延期三天以上没有发货SELECT DISTINCT user_idFROM order_infoWHERE order_id IN ( SELECT order_id FROM shipping_package WHERE add_time < shipping_time OR shipping_status = 0 )AND add_time >= (UNIX_TIMESTAMP('2010-12-01 00:00:00')-28800)AND add_time <= (UNIX_TIMESTAMP( 阅读全文

posted @ 2011-03-08 20:37 小伍BLOG 阅读(276) 评论(0) 推荐(0)

高效的MySQL分页
摘要:原文地址:http://www.fuchaoqun.com/2009/04/efficient-pagination-using-mysql/PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇”Efficient Pagination Using MySQL“的报告,有很多亮点,本文是在原文基础上的进一步延伸。首先看一下分页的基本原理:mysql> explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20\G***************** 1. row ***** 阅读全文

posted @ 2011-03-04 21:25 小伍BLOG 阅读(279) 评论(0) 推荐(0)

Mysql日期和时间函数大全
摘要:对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。1、这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:mysql> SELECT something FROM tableWHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;2、返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。DAYOFWEEK(date)mysql> select DAYOFWEEK('1998-02-03' 阅读全文

posted @ 2011-03-04 21:08 小伍BLOG 阅读(212) 评论(0) 推荐(0)

精妙SQL语句集合(转)
摘要:精妙SQL语句集合(收集)下列语句部分是Mssql语句,不可以在access中使用。SQL分类:DDL—数据定义语言(Create,Alter,Drop,DECLARE)DML—数据操纵语言(Select,Delete,Update,Insert)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CreateDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver---创建备份数据的deviceUSEmasterEXECsp_addumpdevic 阅读全文

posted @ 2011-03-04 20:51 小伍BLOG 阅读(203) 评论(0) 推荐(0)

MySQL第六天
摘要:字符串匹配模式[代码]正则表达式匹配代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#以‘co’开始mysql>SELECTnameFROMmetalWHEREnameREGEXP'^co';+--------+|na... 阅读全文

posted @ 2010-08-14 20:30 小伍BLOG 阅读(185) 评论(0) 推荐(0)

MySQL第五天
摘要:复制表结构[代码]查看、更改当前表的引挚代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#第一中方法,非常实用,但是很长比较麻烦,mysql>SELECTENGINEFROMINFORMATION_SCHEMA.TABLES->WHE... 阅读全文

posted @ 2010-08-14 13:32 小伍BLOG 阅读(194) 评论(0) 推荐(0)

MySQL第四天
摘要:结果集的排序ORDER BY 以某个字段排序DESC 逆序使用视图来简化查询视图是一种虚拟的数据库表,它并不是实际的数据。创建视图代码使用视图代码多表查询 profile 表ID和 profile_contact 表profile_id对应 其中 id,name 来自profile 表service, contact_name 来自profile_contact 表ON表示他们之间的绑定规则代码子... 阅读全文

posted @ 2010-08-13 20:28 小伍BLOG 阅读(248) 评论(0) 推荐(0)

mysql第三天
摘要:未使用别名(alias)[代码]使用别名代码字符串与表达式的区别数字靠右边对齐字符串靠左边对齐‘1+1+1’ 表示 一个字符串没加引号的1+1+1 是一个表达式代码合并多列组成复合值CONCAT() 使用代码where语句中不可以使用别名代码使用where语句与移除where语句的区别没有where语句时,会遍历所有其中‘0’ 是假‘1&... 阅读全文

posted @ 2010-08-13 10:22 小伍BLOG 阅读(247) 评论(0) 推荐(0)