当前位置:七道奇文章资讯数据防范MySQL防范
日期:2011-01-25 22:43:00  来源:本站整理

MySQL索引范例大汇总[MySQL防范]

赞助商链接



  本文“MySQL索引范例大汇总[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

本文主要介绍了7种差别范例的MySQL索引范例.在MySQL数据库表中,对字段举行成立索引是可以大幅度的提高其实际查询速度.通过对这些索引的巧妙的应用,我们可以令MySQL的查询和运行越发高效.

索引是快速搜索的关键.MySQL索引的成立关于MySQL的高效运行是很重要的.

下面介绍几种常见的MySQL索引范例:

在数据库表中,对字段成立索引可以大大提高查询速度.假定我们成立了一个 mytable表:

  1. CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 

我们随机向里面插入了10000条记录,此中有一条:5555, admin.

在查找username="admin"的记录

  1. SELECT * FROM mytable WHERE username='admin'

时,假如在username上已经成立了索引,MySQL无须任何扫描,即精确可找到该记录.相反,MySQL会扫描全部记录,即要查询10000条记录.

索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引.组合索引,即一个索包含多个列.

MySQL索引范例包含:

(1)普通索引

这是最基本的索引,它没有任何限制.它有以下几种成立方法:

成立索引

  1. CREATE INDEX indexName ON mytable(username(length)); 

假如是CHAR,VARCHAR范例,length可以小于字段实际长度;假如是BLOB和TEXT范例,必须指定 length,下同.

改正表构造

  1. ALTER mytable ADD INDEX [indexName] ON (username(length)) 

成立表的时刻直接指定

  1. CREATE TABLE mytable( ID INT NOT NULL, 
    username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 

删除索引的语法:

  1. DROP INDEX [indexName] ON mytable; 

(2)MySQL索引范例:唯一索引

它与前面的普通索引近似,差别的就是:索引列的值必须唯一,但答应有空值.假如是组合索引,则列值的组合必须唯一.它有以下几种成立方法:

成立索引

  1. CREATE UNIQUE INDEX indexName ON mytable(username(length)) 

改正表构造

  1. ALTER mytable ADD UNIQUE [indexName] ON (username(length)) 

成立表的时刻直接指定

  1. CREATE TABLE mytable( ID INT NOT NULL, 
    username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) ); 

(3)MySQL索引范例:主键索引

它是一种特别的唯一索引,不答应有空值.普通是在建表的时刻同时成立主键索引:

  1. CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) ); 

当然也可以用 ALTER 号令.记着:一个表只能有一个主键.

(4)组合索引

为了形象地比较单列索引和组合索引,为表增添多个字段:

  1. CREATE TABLE mytable( ID INT NOT NULL, username 
    VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL ); 

为了进一步榨取MySQL的效率,就要考虑成立组合索引.就是将 name, city, age建到一个索引里:

  1. ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); 

建表时,usernname长度为 16,这里用 10.这是因为普通情形下名字的长度不会超越10,这样会加快索引查询速度,还会削减索引文件的大小,提高INSERT的更新速度.

假如辨别在 usernname,city,age上成立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引.固然此时有了三个索引,但MySQL只能用到此中的那个它认为仿佛是最有效率的单列索引.

成立这样的组合索引,其实是相当于辨别成立了下面三组组合索引:

  1. usernname,city,age usernname,city usernname 

以上的相关内容就是对MySQL索引范例的部份内容的介绍,望你能有所收获.   以上是“MySQL索引范例大汇总[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .