1.索引

详细介绍:http://www.cnblogs.com/57rongjielong/p/8039452.html

索引是对数据库表中一个或多个列的值进行排序的结构。索引是经过某种算法优化过的,因而查找次数相对较少。

mysql的索引分为单列索引(主键索引,唯一索引,普通索引)和组合索引.

单列索引:一个索引只包含一个列,一个表可以有多个单列索引.

组合索引:一个组合索引包含两个或两个以上的列,

2.MySQL中常见索:

A.普通索引

 CREATE TABLE person(
pid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
pname VARCHAR(20) NOT NULL,
page INT,
-- 创建表时创建索引
INDEX index_pname(pname)
) -- 单独创建索引
-- create index 索引名称 on 表名(列名)
CREATE INDEX index_page ON person(page); -- 删除索引
-- drop index 索引名称 on 表名;
DROP INDEX index_page ON person; -- 查看索引
-- show index from 表名;
SHOW INDEX FROM person; -- 对于创建索引时如果是BLOB 和 TEXT 类型,必须指定length

B.唯一索引

唯一性索引和普通索引最大的差异就是在索引列上增加了一层唯一约束。添加唯一性索引的数据列可以为空,但是只要存在数据值,就必须是唯一的。

 CREATE TABLE person(
pid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
pname VARCHAR(20) NOT NULL,
page INT,
-- 创建表时创建唯一索引
UNIQUE index_pname(pname)
) -- 单独创建索引
-- create index 索引名称 on 表名(列名)
CREATE UNIQUE INDEX index_page ON person(page); -- 删除索引
-- drop index 索引名称 on 表名;
DROP INDEX index_page ON person; -- 查看索引
-- show index from 表名;
SHOW INDEX FROM person; -- 对于创建索引时如果是BLOB 和 TEXT 类型,必须指定length

C.主键索引

在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。数据不能为空。

CREATE TABLE person(
pid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
pname VARCHAR(20) NOT NULL,
page INT
)

CREATE TABLE person(
pid INT NOT NULL AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL,
page INT,
PRIMARY KEY(pid)
)
CREATE TABLE person(
pid INT NOT NULL,
pname VARCHAR(20) NOT NULL,
page INT
)
-- 添加主键索引
ALTER TABLE person ADD PRIMARY KEY(pid);
-- 删除主键
ALTER TABLE person DROP PRIMARY KEY; ALTER TABLE person MODIFY pid INT,DROP PRIMARY KEY;

D.组合索引

——两列或者多列组合成一个索引进行查询,频繁的同时使用n列来进行查询

CREATE INDEX ix_pid_pname ON person(pid,pname);
  • pid and pname-- 使用索引
  • pid                   -- 使用索引
  • pname             -- 不使用索引

注意:

  • 避免使用select *
  • count(1)或count(列) 代替 count(*)
  • 创建表时尽量使用 char 代替 varchar
  • 表的字段顺序固定长度的字段优先
  • 组合索引代替多个单列索引(经常使用多个条件查询时)
  • 尽量使用短索引
  • 使用连接(JOIN)来代替子查询(Sub-Queries)
  • 连表时注意条件类型需一致
  • 索引散列值(重复少)不适合建索引,例:性别不适合

3.limit分页

    select * from 表 limit 5;            - 前5行
select * from 表 limit 4,5; - 从第4行开始的5行
select * from 表 limit 5 offset 4 - 从第4行开始的5行

(三)MySQL终极篇的更多相关文章

  1. Linux配置mysql (centos配置java环境 mysql配置篇 总结四)

    ♣安装的几种方法和比较 ♣配置yum源 ♣安装mysql ♣启动mysql ♣修改密码 ♣导入.sql文件 ♣缓存设置 ♣允许远程登录(navicat) ♣配置编码为utf8  1.关于Linux系统 ...

  2. 第二章 MySQL入门篇

    第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...

  3. mysql 架构篇系列 3 复制运行状态监控与选项参数说明

    一. 概述 在上一篇中,搭建了一主一从的复制架构,这篇通过一些诊断方法来了解复制的运行状态和一些选项参数说明.上次mysql主从服务关机,今天在打开mysql服务,出现了错误信息. 1.首先 启动主从 ...

  4. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  5. 【目录】mysql 进阶篇系列

    随笔分类 - mysql 进阶篇系列 mysql 开发进阶篇系列 55 权限与安全(安全事项 ) 摘要: 一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysq ...

  6. mysql注入篇

    博客这个东西真的很考验耐心,每写一篇笔记,都是在艰难的决定中施行的,毕竟谁都有懒惰的一面,就像这个,mysql注入篇,拖拖拖一直拖到现在才开始总结,因为这个实在是太多太杂了,细细的总结一篇太烧脑. 由 ...

  7. 最新MySQL入门篇

    一.SQL简介 ​ SQL:结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系 ...

  8. (6)MySQL进阶篇SQL优化(MyISAM表锁)

    1.MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源 (如 CPU.RAM.I/O 等)的抢占以外,数据也是一种供许多用户共享的资源.如何保证数 据并 ...

  9. 「 MySQL高级篇 」MySQL索引原理,设计原则

    大家好,我是melo,一名大二后台练习生,大年初三,我又来充当反内卷第一人了!!! 专栏引言 MySQL,一个熟悉又陌生的名词,早在学习Javaweb的时候,我们就用到了MySQL数据库,在那个阶段, ...

随机推荐

  1. 轻松解决U盘加密问题

    很多小伙伴常常会遇到这样的问题,比如说有朋友或者同事想借用你的u盘,处于人情世故你又不得不借,但是又不喜欢自己的文件被别人看到或者担心丢失或被修改,在此提供一种给u盘加密或者给u盘里的文件加密的方法. ...

  2. leetcode记录-回文数

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向 ...

  3. linux c makefile

    unio : unio.c gcc unio.c -o unio run:  ./unio 上面有错.必须强制按照规则来: 目标体:依赖文件 命令 命令必在目标体的下一行,且要加TAB键,必须必须. ...

  4. 转:c# Linq 的分页[转]

    转:http://www.cnblogs.com/leleroyn/archive/2008/05/14/1196811.html 很多学习Linq的朋友肯定有自己所不同的方法,考虑这个问题我所想到的 ...

  5. 20155214 2016-2017-2 《Java程序设计》第3周学习总结

    20155214 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 Chapter4 一个原始码中可以有多个类定义,但只能有一个公开类,且文档中的主文档名必须与 ...

  6. 20155319 《Java程序设计》实验五(网络编程与安全)实验报告

    20155319 <Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 (一) 两人一组结对编程 参考http://www.cnblogs.com/rocedu/p/6 ...

  7. class kind type sort区别

    class多用于 级别比如高级货就是 first class,primary class等等,以此类推kind 和sort 基本一样,就像你说的,译为 种类,what kind of疑问,回答时用so ...

  8. pycharm设置github

    1.打开file,选择settings,找到Version Contorl,打开找到GitHub ,HOST填github.com,用户名,密码,test,稍等一会,会提示成功 2. 设置好以后 打开 ...

  9. autoreleasepool 自动释放池的理解

    常见的面试题:以下代码存在什么样的问题?应该如何改进? for (int i = 0; i < 100000; i++) { NSString *str = @"abc"; ...

  10. dubbo常见的一些面试题

    什么是Dubbo? Duubbo是一个RPC远程调用框架, 分布式服务治理框架 什么是Dubbo服务治理? 服务与服务之间会有很多个Url.依赖关系.负载均衡.容错.自动注册服务. Dubbo有哪些协 ...