随笔分类 - SQL
摘要:T1表10000000万条数据,(插入时间36分钟,count(*)查询19秒,空间占用670M左右)1.真正充分的利用索引比如like'张%'就是符合SARG(符合扫描参数)标准而like'%张'就不符合该标准通配符%在字符串首字符的使用会导致索引无法使用,虽然实际应用中很难避免这样用,但还是应该...
阅读全文
摘要:1.uuid用binary保存 建议uuid不要使用char来保存,而用binary(16)来保存。这里在长度上来讲用binary会节省一半。因为一个字符占用1个字节,而一个字节实际上可以表示0-256(2^8),用16进制的表示需要2个字节00-FF(0-256)。优化前:SET uuid = UUID() (类型:char(36))优化后:SET uuid = HEX(REPLACE(UUID(), '-', '')) (类型:binary(16))2.用crc32替换长字符串的查找如果索引列是个很长的字符串,例如url。那可以再建立一个列用来保存这个列的c
阅读全文
摘要:直接看例子例子: table id name 1 a 2 b 3 c 4 c 5 b1 通过 distinct 来实现select distinct name from table结果:nameabc2 通过 group_concat 配合 group by 来实现 (注意:需要mysql 4.1及以上)select id,group_concat(distinct name) from table group by name结果:id name1 a2 b3 c3 通过select id, count(distinct name) from table group by name结果:id.
阅读全文
摘要:其他强制操作,优先操作如下:mysql常用的hint对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在mysql里,也有类似的hint功能。下面介绍一些常用的。强制索引 FORCE INDEXSELECT * FROM TABLE1 FORCE INDEX (FIELD1) …以上的SQL语句只使用建立在FIELD1上的索引,而不使用其它字段上的索引。忽略索引 IGNORE INDEXSELECT * FROM TABLE1 IGNORE INDEX (FIELD1, FIELD2) …在上面的SQL语句中,TABLE1表中F
阅读全文
摘要:1,创建索引对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。2,复合索引比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;如果我们是在area和age上分别创
阅读全文
摘要:重装系统后恢复之前MySQL数据库========================================MySQL_new 是新安装的mysqlMySQL_old 是重装系统前的文件夹把old里的 data 目录直接复制过去后,导致mysql 服务启动不了。将服务停止后,复制data过去,服务可启动,但是数据库里的表却打不开1146-table doesn't exist!再次将服务停止,之后将 ibdata1 从MySQL_old文件夹中复制 ibdata1 到 新装的 MySQL重新启动 Mysql服务,打开表成功!
阅读全文
摘要:更改默认的mysql数据库目录将 C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data 改到 D:\MysqlData1. 建立文件夹 D:\MysqlData2. 停止 mysql 服务,将 "C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data" 所有文件,拷贝到 D:\MysqlData3. 在 mysql 安装目录找到 my.ini文件,找到:#Path
阅读全文
摘要:--最左前缀--多列索引的一个优点,它通过称为最左前缀(LeftmostPrefixing)的概念体现出来。继续考虑前面的例子,现在我们有一个firstname、lastname、age列上的多列索引,我们称这个索引为fname_lname_age。当搜索条件是以下各种列的组合时,MySQL将使用fname_lname_age索引:firstname,lastname,agefirstname,lastnamefirstname--从另一方面理解,它相当于我们创建了(firstname,lastname,age)、(firstname,lastname)以及(firstname)这些列组合上的
阅读全文
摘要:一、MySQL 获得当前日期时间 函数1.1 获得当前日期+时间(date + time)函数:now()mysql> select now();+---------------------+| now() |+---------------------+| 2008-08-08 22:20:46 |+---------------------+除了 now() 函数能获得当前的日期时间外,...
阅读全文
摘要:using System;using System.Data;using MySql.Data;using MySql.Data.MySqlClient;namespace DBUtility{ /// <summary> /// 基于MySQL的数据层基类 /// </summary> public abstract class MySqlHelper { #region...
阅读全文
摘要:在Percona Performance Conference 2009大会上来自yahoo的Surat Singh Bhati (surat@yahoo-inc.com) 和 Rick James (rjames@yahoo-inc.com)给大家分享了MySQL高效分页的经验。 一、概述 常见分页方式 schema设计和常见的分页方式(偏移) 避免分页偏移过大的技巧 性能对比 重点 二、常见分...
阅读全文
摘要:--批量修改表的所有者: exec sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' ' --单个修改表所有者: exec sp_changeobjectowner '要改的表名','dbo' --批量修改存储过程的存储过程:CREATE PROCEDURE ChangeProcOwner @OldOwner as NVARCHA...
阅读全文
摘要:[代码]例11用圆点作为日期的分隔附,并把时间转换为当地的时区的时间。更多关于SQLite日期时间函数方面的内容,可以参考Chris Newman写的《SQLite》(ISBN:0-672-32685-X)中的《Working with Dates and Times》一文。
阅读全文
摘要:我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设...
阅读全文
摘要:Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> --建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar...
阅读全文
摘要:0 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0) 1 02/22/06 CONVERT(CHAR(8), CU...
阅读全文
摘要:set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE PROC [dbo].[user_index] ( @PageIndex int, @PageSize int, @education_id nvarchar(200)=null, @city_id nvarchar(200)=null, @language_id nvarchar(...
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->/*以后我们做多条件查询,一种是排列结合,另一种是动态拼接SQL 如:我们要有两个条件,一个日期@addDate,一个是@name 第一种写法是 */ if (@addDate is not n...
阅读全文