【实习记】2014-09-02MySQL数据库中key与index区别

做数据库优化时,使用sql语句调整数据库,在此记录一下。

好博客,好文章

《mysql常用SQL语句》
http://www.cnblogs.com/jevo/p/3257222.html

《MySQL 主键与索引的联系与区别分析》
http://www.jb51.net/article/34037.htm

1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。

2. 一个表中可以有多个唯一性索引,但只能有一个主键。

3. 主键列不允许空值,而唯一性索引列允许空值。

4. 索引可以提高查询的速度。

在MySQL中,INDEX和KEY的概念是一样的。
Key即键值,是关系模型理论中的一部份,用于数据完整性检否与唯一性约束等。而Index则处于实现层面,比如可以对表个的任意列建立索引

修改数据库表结构的语句:废除原主键,建新主键,删除前缀行。

lock tables t_IP0040T1 write;

alter table t_IP0040T1 drop primary key;

alter table t_IP0040T1 drop column Fissuer_acc_range_prefix;

# primary need not
alter table t_IP0040T1 add Fid bigint primary key auto_increment;

alter table t_IP0040T1 add unique key (Fissuer_acc_range_low, Fgcms_product_id);

unlock tables;

记录:

alter table t_IP0040T1 add Fid bigint primary key auto_increment;   # 可以直接增加自增主键
# 等于以下两句,primary可省略是为了兼容其他数据库。
alter table t_IP0040T1 add Fid bigint not null;                     # 此时都为0
alter table t_IP0040T1 change Fid Fid bigint key auto_increment;    # 现在是1、2、3、4……
# 如果 key 是 index ,则出错。此处key不等于index。
时间: 2024-10-29 21:33:56

【实习记】2014-09-02MySQL数据库中key与index区别的相关文章

mysql中key 、primary key 、unique key 与index区别

一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id int(11) NOT NULL auto_increment, user_name varchar(100) default NULL, operation_time datetime default NULL, logrecord_operation varchar(100) default NULL, PRIMARY KEY (logrecord_id), KEY wh

[Z]mysql中key 、primary key 、unique key 与index区别

一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id int(11) NOT NULL auto_increment, user_name varchar(100) default NULL, operation_time datetime default NULL, logrecord_operation varchar(100) default NULL, PRIMARY KEY (logrecord_id), KEY wh

Mysql索引详解及优化(key和index区别)

MySQL索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了:聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快 要注意的是,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件.对于一个经常需要更新和插入的表格,就没有必要为

记一次在数据库中查询:“包含”或者“仅包含”某些商品的订单的方法

有这样一个需求: 从数据库中查出包含"商品1"和"商品2"的订单: 从数据库中查出包含"商品1"或"商品2"的订单: 从数据库中查出仅包含"商品1"和"商品2"的订单: 从数据库中查出仅包含"商品1"或"商品2"的订单: 这里只用"商品1"."商品2"举例,可以扩展到多个商品的需求. 涉及到的表大概如下图:

Mysql中Key与Index的区别

mysql的key和index多少有点令人迷惑,这实际上考察对数据库体系结构的了解的. 1 key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的).包括primary key, unique key, foreign key 等. primary key 有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个index: unique key 也有两个作用,一是约束作用(cons

数据库中varchar和Nvarchar区别与联系

在数据库中新建表的时候发现了字段类型有的带n有的不带n,那么两者之间有什么区别? 于是上网查找一些资料如下: 一. 1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim(). 2.VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARC

数据库中的索引Index

索引就像一本书的目录,而书中的索引是对一个词语的列表,其中注明了包含各个词的页码.数据库中的索引 是某一个表中一列或者若干列值的集合和相应的只想表中物理标识这些值的数据页的逻辑指针清单. 索引的作用: 1.通过创建唯一索引,可以保证数据记录的唯一性: 2.可以大大的加快数据检索的速度: 3.可以加速表与表之间的连接: 4.在使用ORDER BY 和GROUP BY 子句中进行检索数据是,可以显著减少查询中分组和排序的时间: 5.使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能: 索引分

数据库中 ’’ 和 NULL的区别

null不是对象,''是对象 从'',你就可以知道这是一个字符串类型的数据,是一个长度为零的字符串. 从NULL,你只能知道这里没有赋过值,是空的,他不属于任何数据类型. 我们在数据库实际使用中,一般把字符串型变量默认为'',数值型变量默认为0,这样才能保正在进行逻辑运算时不产生类型不匹配的错误.SQL SERVER中函数为:ISNULL(变量,值),如对于整型变量,这样去参加运算:SET @VAR=1+ISNULL(整型变量,0)对于字符型变量,这样去参加运算:SET @VAR=ISNULL(

谈谈数据库中MyISAM与InnoDB区别 针对业务类型选择合适的表

MyISAM:这个是默认类型,它是基于传统的ISAM类型, ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法. 与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键.如果事物回滚将造成不完全回滚,不具有原子性.如果执行大量的SELECT,MyISAM是更好的选择. MyIASM是IASM表的新版本,有如下扩展