zoukankan      html  css  js  c++  java
  • sql的优化-索引

    什么是索引?索引的定义是如何,在你的项目中用来了索引吗?

    索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。

    索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

    定义:

    分为普通索引, 唯一索引, 主键索引

    普通索引

    创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);

    修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);

    创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );
     drop  index <索引名>
     

    唯一索引是不允许其中任何两行具有相同索引值的索引。

    创建唯一索引的几种方式:
    创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
    修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
    创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );
     
    主索引,数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键
     
    项目中是否用到索引?
    conut(*),该查询语句在表中有索引的情况下,会用到索引。SQL优化器在底层会查找索引或者主键count(pk_name),
    所以在数据库中count(*)在有主键的情况下,速度会比没有主键的情况下快。
     
    count(1)和count(*)的区别, 
    在没有索引或者主键的情况下, count(1)比count(*)要快, 应为count(*),此时会查找所有的列。
    在有索引或者主键的情况下,count(1)和count(*)都一样快,都会查找索引。
     
    在生产项目与门户项目集成时,用到了唯一性索引,unique index, 在集团编码列上用唯一性索引,此时主要提高查询速度。
     
  • 相关阅读:
    ubuntu
    long long 的输入输出问题
    hdu 4135 a到b的范围中多少数与n互质(容斥)
    hdu4757 可持续化01字典树+LCA
    E
    bzoj4260 求两个不相交的区间各自异或后相加的最大值。
    hdu4638 问一段区间能组成多少段连续的数
    hdu4637 计算俩运动对象的时间交
    hdu4632 回文子序列
    hdu4635 有向点双
  • 原文地址:https://www.cnblogs.com/alisonGavin/p/8182349.html
Copyright © 2011-2022 走看看