您的位置:首页 >> 数据库 >> MySQL >> 正文
MySQL RSS
 

MySQL数据库学习手册之MySQL语言参考

http://www.rdxx.com 05年08月24日 10:00 linux宝库 我要投稿



SET值以数字次序被排序。NULL指排在非NULL SET值之前。

通常,你使用LIKE操作符或FIND_IN_SET()函数执行在一个SET上的一个SELECT:

mysql> SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;

但是下列也会工作:

mysql> SELECT * FROM tbl_name WHERE set_col = 'val1,val2';
mysql> SELECT * FROM tbl_name WHERE set_col & 1;

这些语句的第一个语句寻找一个精确的匹配。第二个寻找包含第一个集合成员的值。

如果你想要得到一个SET列的所有可能的值,你应该使用:SHOW COLUMNS FROM table_name LIKE set_column_name并且分析在第二列的SET定义。
7.3.8 为列选择正确的类型

为了最有效地使用存储空间,试着在所有的情况下使用最精确的类型。例如,如果一个整数列被用于在之间1和99999的值, MEDIUMINT UNSIGNED是最好的类型。

货币值的精确表示是一个常见的问题。在MySQL,你应该使用DECIMAL类型,它作为一个字符串被存储,不会发生精确性的损失。如果精确性不是太重要,DOUBLE类型也是足够好的。

对高精度,你总是能变换到以一个BIGINT存储的定点类型。这允许你用整数做所有的计算,并且仅在必要时将结果转换回浮点值。见10.6 选择一个表类型。
7.3.9 列索引

所有的MySQL列类型能被索引。在相关的列上的使用索引是改进SELECT操作性能的最好方法。

一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。

对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。在CREATE TABLE语句中索引列前缀的语法看起来像这样:

KEY index_name (col_name(length))

下面的例子为name列的头10个字符创建一个索引:

mysql> CREATE TABLE test (
name CHAR(200) NOT NULL,
KEY index_name (name(10)));

对于BLOB和TEXT列,你必须索引列的前缀,你不能索引列的全部。
7.3.10 多列索引

MySQL能在多个列上创建索引。一个索引可以由最多15个列组成。(在CHAR和VARCHAR列上,你也可以使用列的前缀作为一个索引的部分)。

一个多重列索引可以认为是包含通过合并(concatenate)索引列值创建的值的一个排序数组。

当你为在一个WHERE子句索引的第一列指定已知的数量时,MySQL以这种方式使用多重列索引使得查询非常快速,即使你不为其他列指定值。

假定一张表使用下列说明创建:

mysql> CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,

共30页  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30


 
 
标签: 学习手册 , 参考 , MySQL , 语言 , 数据库 , SQL , 数据 , 学习 , 手册 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站