使用分区数据表:
分区数据表和merge数据表具有相似的作用,但是分区数据表确确实实是一个数据表
,不像merge是列出数据表的逻辑关系,并且分区数据表可以包括像myisam以外的
的数据表。
创建分区数据表:
create table 里给出数据列和索引,然后用partition by 定义一个用来把数据行分配
到各个分区的分区函数:[将数据表分成四个区]
create table log_partition( dt datetime not null, info varchar(100) not null, index(dt) ) partition by range(year(dt)) ( partition p0 values less than (2010), partition p1 values less than (2011), partition p2 values less than (2012), partition p3 values less than maxvalue );
将maxvalue再进行分区alter log_partition reorganize partition into ( partition p4 values less than (2013), partition p5 values less than (2014), partition p6 values less than maxvalue );
分区被包含在分区数据表所属于的数据库的子目录中,需要使用data_directory和index_dirctory分区选项;
federated(同盟)引擎
可以访问其他主机由另一个mysql服务器管理的数据表
删除数据表:
drop table table_name1,table_name2,...]
在不确定删除的数据库是否存在时,使用drop table if exist table_name,在创建脚本的时候使用if exist 会更加的安全,
如要删除临时数据表加上temporary关键字:drop temporary table table_name;
创建索引:
唯一索引:不允许索引项本身出现重复的值(primary,unqiue)
普通索引:允许索引出现重复值
fulltext索引:全文索引,只适合myisam引擎
spatial索引只能使用与myisam数据表,只用于not null属性,所涉及的列全部带索引
hash(散列索引):这是memory的默认索引类型,但是memory索引还可以使用btree;
hash是精确查找,比较查找的时候使用btree更好
使用alter table和create index给现有数据表添加索引
alter table table_name add [index,unique,primary key,fulltext,spatial] index_name(index_columns) ps:index_name是可选的
如果某个索引是primary key和spatial,那么带索引的必须是not null属性
如果想限制独不能重复的值,可以创建primary key或者unique索引
(1)但是每一个数据表只有一个primary key,而unique却可以有多
(2)primary key不能包括null值,但是unqie却可以,而且可以使多个null值
除了primary key,其他的索引几乎都可以使用create index语句:create index index_name on table_name(index_name)(一次只能创建一个索引)
在创建表的时候定义索引:
create table table_name ( id int, index [index_name](id) ); 对于primary key和unqie来说可以是: create table table_name ( id int primary key[unqie] );
menory的默认索引是hash(散列索引),但用memory数据表进行范围比较(id<100)创建btree比hash更好
create table tb_name ( id int, index using btree(id) )engine=memory;
对某个字符串前缀编辑索引,语法是columns(n)n是前面的n个字符
create table tb_name ( name char(30) NOT NULL, adress binary(60) NOT NULL, index(name(10)), index(adress(15)) );
对于blob和text数据列则只能创建前缀型索引
重建索引:
repair table table_name quick;
查看索引:
show index from table_name或show keys from table_name ps:查看index_name
删除索引:
drop index index_name on tb_name
alter table tb_name drop index index_name