mysql 索引机制
Chapter 4. Indexes
索引有助于MySQL在浩如烟海的数据中迅速找到和取得正确的记录。
4.1 Indexing Basics
4.1.1 Index Concepts
索引是按照某种规则排序的。索引也就是牺牲一些空间和cpu的开销来使你的查询跑得更快点。另外提醒的是,对于MySQL来讲,术语“Key”和“Index”是可以互相替换的。
4.1.1.1 Partial indexes
索引是以空间换取性能。但有时候不想耗费太多的空间的话,MySQL有一系列控制索引空间的方法。例如你可以控制索引字节,采取部分索引的方法,当然这样性能会降低一些。
ALTER TABLE
phonebook ADD INDEX
(last
name(4))
4.1.1.2 Multicolumn indexes
使用多列索引的原因在于:MySQL will only ever use one index per table per query。
4.1.1.3 Index order
MySQL无需人工干预索引的排序,它会处理得很好。
4.1.1.4 Indexes as constraints
唯一索引(unique index)标明在给定的列里特值只能出现一次。唯一索引有两个作用:一个就是帮助查询迅速定位;二就是当插入或更新时,保证列里的值的唯一性。这就意味着,在这里,唯一索引起到了约束的作用。
ALTER TABLE
phonebook ADD UNIQUE
(phone
number)
4.1.1.5 Clustered and secondary indexes
聚集索引(clustered
index)将主键和记录直接挂钩,而且记录是根据主键来排序的。每一个表只能有一个聚集索引,这很好理解,因为记录只能用一种方法来排序。当你通过主键
来查询数据的时候,聚集索引非常快。因为它只要一次查询就可以得到结果,而标准的MyISAM的索引需要两次查询,先查到索引,然后通过索引得到的位置再
去查数据。
4.1.1.6 Unique indexes versus primary keys
主键其实就是一种不能包括数值NULL的唯一索引。主键对于MyISAM引擎不是必需的,但对于InnoDB 和BDB引擎来讲是必需的,如果你不声明,他们会隐含添加一个主键
4.1.1.7 Indexing NUL
Ls
4.2 Index Structures
这一节作者不会深究细节,他只想解决这几个问题:那种索引类型速度最快?那种灵活性最好?那种占用的空间最少?
4.2.1 B-Tree Indexes
B-Tree(balance tree)是目前最流行的索引类型,因为它在灵活性,空间占用和综合性能都比较优异。
B-Tree顾名思义就是树形结构,每个节点按照索引的数值来安排。因为是balance吗,所以在添加和去除节点后,B-Tree也不会失去平衡,它会自动调节。这种结构的好处就在于即使在最坏的情况下仍然可以得到比较
相关文档:
1.
blob是二进制大对象,可以容纳可变量数量的数据,其中blob分为4中类型:TINYBLOB,BLOB,mediumblob和LongBlob,他们容纳的长度是不同的.
Text同样也分为四种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
2.
blob被视为二进制字符串,Text被视为非二进制字符串;
blob列没有字符集,并且排序和比较基于列值字节的数值值。
......
1、mysql编译参数:
#cat /usr/local/mysql/bin/mysqlbug|grep configure
# This is set by configure
CONFIGURE_LINE="./configure '--prefix=/usr/local/mysql' '--with-openssl' '--enable-thread-safe-client' '--enable-local-infile' '--with-charset=gbk' '-with-extra-charsets=gb2312,gbk'"
表示编译中支持ope ......
将SQL语句放到一个文件中然后告诉mysql从该文件读取输入,eg:
shell>mysql db_name < text_file
如果正在运行mysql,可以使用"source"或"\."命令执行SQL脚本文件:
mysql>source filename
mysql>\. filename
例如,要在数据库test中创建表和插入数据,其中创建表和插入数据的SQL语 ......