SQL
ZYaller
http://www.zyall.com
展开
-
mysql:获取系统当前的数字形式时间值
mysql:获取系统当前的数字形式时间值UNIX_TIMESTAMP(date) 返回一个Unix时间戳(从'1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间)eg:1 mysql> select UNIX_TIMESTAMP(); 2 -> 882226357 3 mysql> selec原创 2013-01-11 11:42:51 · 739 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之17[拆分大的 DELETE 或 INSERT 语句]
拆分大的 DELETE 或 INSERT 语句 如果你需要在一个在线的网站上去执行一个大的 DELETE 或 INSERT 查询,你需要非常小心,要避免你的操作让你的整个网站停止相应。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了。 Apache 会有很多的子进程或线程。所以,其工作起来相当有效率,而我们的服务器也不希望有太多的子进程,线程和数据库链接,这是极原创 2014-01-09 13:18:20 · 2157 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之19[选择正确的存储引擎]
选择正确的存储引擎 在 MySQL 中有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。酷壳以前文章《MySQL: InnoDB 还是 MyISAM?》讨论和这个事情。 MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,M原创 2014-01-09 13:21:33 · 655 阅读 · 0 评论 -
mysql:四舍五入函数
FLOOR(X)返回不大于X的最大整数值。mysql> select FLOOR(1.23); -> 1mysql> select FLOOR(-1.23); -> -2注意返回值被变换为一个BIGINT! CEILING(X)返回不小于X的最小整数值。mysql> select CEILING(1.23); -转载 2014-01-09 13:30:20 · 891 阅读 · 0 评论 -
mysql字符串分割和拼接函数介绍
mysql字符串分割SUBSTRING_INDEX()和拼接CONCAT()函数介绍原创 2014-02-28 10:55:04 · 11764 阅读 · 0 评论 -
mysql的IFNULL、IF、CASE...WHEN...THEN...函数的使用讲解
mysql的IFNULL、IF、CASE...WHEN...THEN...函数的使用讲解原创 2014-02-28 10:36:48 · 1724 阅读 · 0 评论 -
MySQL数据库分表
先说一下为什么要“分表” 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1、接收到sql;2、把sql放到排队队列中 ;3、执行sql;4、返回执行结果。在这个执行过程中最花时间在什么地方呢?第一、原创 2014-03-04 15:22:33 · 708 阅读 · 0 评论 -
MySQL5.1新增Event Scheduler功能【实现定时性的作业】
LAMP的程序员为了完成一些周期性的数据库操作任务,总是不得不借助于操作系统的帮助,比如Windows的计划任务,或者Linux的contab。MySQL5.1终于新增了Event Scheduler功能,可以直接在后台实现一下定时性的作业。但不知道什么原因,在英文版的参考手册中,位于触发器和视图之间的第20章Event Scheduler,在中文版中被删减掉了,手册的其他部分也没有丝毫提到它,好像它根本就不存在一样,所以它的知名度不是很高。有兴趣的读者可以参考http://dev.mysql.com/do原创 2014-03-22 10:25:12 · 1101 阅读 · 0 评论 -
MySQL查询时强制区分大小写
MySQL查询时强制区分大小写。原创 2014-05-04 15:15:53 · 1174 阅读 · 0 评论 -
Mysql:把指定数据行排在前面
Mysql:把指定数据行排在前面如果只是一条数据行,可以这样:SELECT * FROM user ORDER BY user_id<>7,score DESC;主要是“user_id<>7”,就会把用户id为7的排在前面。原创 2014-06-11 11:36:10 · 10907 阅读 · 8 评论 -
mysql:21个性能优化最佳实践之16[垂直分割]
垂直分割 “垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。(以前,在银行做过项目,见过一张表有100多个字段,很恐怖) 示例一:在Users表中有一个字段是家庭地址,这个字段是可选字段,相比起,而且你在数据库操作的时候除了个人信息外,你并不需要经常读取或是改写这个字段。那么,为什么不把他放到另外一张表中呢原创 2014-01-09 13:12:54 · 750 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之14[把IP地址存成UNSIGNED INT]
很多程序员都会创建一个 VARCHAR(15) 字段来存放字符串形式的IP而不是整形的IP。如果你用整形来存放,只需要4个字节,并且你可以有定长的字段。而且,这会为你带来查询上的优势,尤其是当你需要使用这样的WHERE条件:IP between ip1 and ip2。 我们必需要使用UNSIGNED INT,因为 IP地址会使用整个32位的无符号整形。 而你的查询,你可以使用 INET_ATON() 来把一个字符串IP转成一个整形,并使用 INET_NTOA() 把一个整形转成一个字符串IP。在PHP原创 2014-01-09 13:10:07 · 1410 阅读 · 0 评论 -
mysql:多行查询结果合并成一行
mysql函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行。原创 2013-12-24 09:38:51 · 2288 阅读 · 0 评论 -
数据库优化
大型数据库的设计原则与开发技巧随着计算机技术越来越广泛地应用于国民经济的各个领域,在计算机硬件不断微型化的同时,应用系统向着复杂化、大型化的方向发展。数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维原创 2013-01-11 11:41:18 · 366 阅读 · 0 评论 -
MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
今天在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes查了一下,原来是MySQL默认读取执行的SQL文件最大为16M,我这个SQL文件260M,所以执行不过去解决方法:在MySQL安装目录下找到文件my.ini,搜索[m转载 2013-07-22 11:32:50 · 596 阅读 · 0 评论 -
mysql中如何更新一个字段的值为它本身的值连接上一个字符串
mysql中如何更新一个字段的值为它本身的值连接上一个字符串原创 2013-07-30 16:08:10 · 1432 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之1[为查询缓存优化你的查询]
大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。原创 2014-01-07 11:53:45 · 1178 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之4[为搜索字段建索引]
索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段你总要会经常用来做搜索,那么,请为其建立索引吧。原创 2014-01-07 12:28:05 · 907 阅读 · 0 评论 -
mysql:超过8小时后连接池异常和解决方法
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。解决这个问题的办法有三种:1. 增加 MySQL 的 wait_timeout 属性的值。修改 /etc/mys原创 2013-01-11 11:41:22 · 659 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之3[当只要一行数据时使用 LIMIT 1]
当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。原创 2014-01-07 12:04:37 · 1571 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之6[不要使用ORDER BY RAND()]
千万不要使用 ORDER BY RAND() 想打乱返回的数据行?随机挑一个数据?真不知道谁发明了这种用法,但很多新手很喜欢这样用。但你确不了解这样做有多么可怕的性能问题。 如果你真的想把返回的数据行打乱了,你有N种方法可以达到这个目的。这样使用只让你的数据库的性能呈指数级的下降。这里的问题是:MySQL会不得不去执行RAND()函数(很耗CPU时间),而且这是为了原创 2014-01-07 12:43:45 · 899 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之2[EXPLAIN 你的 SELECT 查询]
使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等。原创 2014-01-07 11:59:15 · 1032 阅读 · 0 评论 -
mysql:21个性能优化最佳实践之5[在Join表的时候使用相当类型的列,并将其索引]
如果你的应用程序有很多 JOIN 查询,你应该确认两个表中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。而且,这些被用来Join的字段,应该是相同的类型的。例如:如果你要把 DECIMAL 字段和一个 INT 字段Join在一起,MySQL就无法使用它们的索引。对于那些STRING类型,还需要有相同的字符集才行。原创 2014-01-07 12:34:49 · 1129 阅读 · 0 评论 -
MYSQL中统计查询结果总行数的便捷方法
MYSQL的关键词 :SQL_CALC_FOUND_ROWS 查看手册后发现此关键词的作用是在查询时统计满足过滤条件后的结果的总数(不受 Limit 的限制)例如: SELECT SQL_CALC_FOUND_ROWS tid FROM cdb_threads WHERE fid=14 LIMIT 1,10;假设满足条件的有1000条,这里返回10条。立即使用 SE转载 2013-07-24 10:17:54 · 1632 阅读 · 0 评论