您的位置: 小凡 - 小凡陋站 >> 学习资料 >> MySQL

  • 网站之MySQL 索引分析和优化

        发表于2009-01-04     评论:(0)

       一、什么是索引?  索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。    假设我们创建了一个名为people的表:    CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );    然后,我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一......全文

  • MYSQL列类型选择与MYSQL查询效率

        发表于2009-01-04     评论:(0)

    要选择有助于使查询执行更快的列,应遵循如下规则(这里,“BLOB 类型”应该理解为即包含B L O B也包含TEXT 类型):   ■ 使用定长列,不使用可变长列。这条准则对被经常修改,从而容易产生碎片的表来说特别重要。例如,应该选择CHAR 列而不选择VARCHAR 列。所要权衡的是使用定长列时,表所占用的空间更多,但如果能够承担这种空间的耗费,使用定长行将比使用可变长的行处理快得多。   ■ 在较短的列能够满足要求时不要使用较长的列。如果正使用的是定长的CHAR 列,应该使它们尽量短。如果列中所存储的最长值为40 个字符,那么就不要将其定义为CHAR ( 2 5 5 );只要定义为CHAR(40) 即可。如果能够使用MEDIUMINT 而不是BIGINT,表将会更小(磁盘I/O 也较少),其......全文

  • MySQL中代替Like语句的另一种写法

        发表于2007-09-27     评论:(2)

    如查找用户名包含有"c"的所有用户, 可以用use mydatabaseselect * from table1 where username like'%c%"下面是完成上面功能的另一种写法:use mydatabaseselect * from table1 where charindex('c',username)>0这种方法理论上比上一种方法多了一个判断语句,即>0, 但这个判断过程是最快的, 我想信80%以上的运算都是花在查找字符串及其它的运算上, 所以运用charindex函数也没什么大不了. 用这种方法也有好处, 那就是对%,|等在不能直接用like查找到的字符中可以直接在这charindex中运用, 如下:use mydatabaseselect * from table1 where charindex('%',username)>0也可以写成:use mydatabaseselect * from table1 where charindex(char(37)......全文

  • Mysql错误代码

        发表于2007-09-27     评论:(0)

    mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败 1023:关闭时发生错误 1024:读文件错误 1025:更改名字时发生错误 1026:写文件错误 1032:记录不存在 1036:数据表是只读的,不能对它进行修改 1037:系统内存不足,请重启数据库或重启服务器 1038:用于排序的内存不足,请增大排序缓冲区 1040:已到达......全文

当前只有一页