首页 > 数据库 >面试mysql

面试mysql

时间:2024-08-16 15:26:46浏览次数:14  
标签:INDEX name 索引 CREATE mysql 面试 sql users

 

 

在 MySQL 中,索引用于提高查询性能。索引的类型有多种,主要包括以下几种:

1. **普通索引(Normal Index)**:
- 这是最常见的索引类型,没有任何约束条件。
- 可以重复,允许 `NULL` 值。
- 创建方法:
```sql
CREATE INDEX index_name ON table_name(column_name);
```

2. **唯一索引(Unique Index)**:
- 索引列中的所有值必须唯一。
- 允许 `NULL` 值,但每个索引列只能有一个 `NULL`。
- 创建方法:
```sql
CREATE UNIQUE INDEX index_name ON table_name(column_name);
```

3. **主键索引(Primary Key Index)**:
- 这是一种特殊的唯一索引,不允许 `NULL` 值。
- 每个表只能有一个主键。
- 通常在创建表时定义主键索引:
```sql
CREATE TABLE table_name (
id INT PRIMARY KEY,
column_name1 VARCHAR(255),
column_name2 INT
);
```

4. **全文索引(Full-Text Index)**:
- 用于全文检索,可以在 `CHAR`、`VARCHAR` 或 `TEXT` 类型的列上创建。
- 通常用于查找文本中的关键词。
- 创建方法:
```sql
CREATE FULLTEXT INDEX index_name ON table_name(column_name);
```

5. **空间索引(Spatial Index)**:
- 主要用于地理数据类型的列(如 `POINT`、`GEOMETRY`)。
- 通常用于处理 GIS 数据。
- 创建方法:
```sql
CREATE SPATIAL INDEX index_name ON table_name(column_name);
```

6. **复合索引(Composite Index)**:
- 在多个列上创建的索引,可以加速同时涉及多个列的查询。
- 创建方法:
```sql
CREATE INDEX index_name ON table_name(column1, column2);
```

### 创建样例

假设我们有一个表 `users`,包含用户信息:

```sql
CREATE TABLE users (
id INT AUTO_INCREMENT,
username VARCHAR(255),
email VARCHAR(255),
age INT,
bio TEXT,
location POINT,
PRIMARY KEY (id)
);
```

1. **普通索引**:
```sql
CREATE INDEX idx_username ON users(username);
```

2. **唯一索引**:
```sql
CREATE UNIQUE INDEX idx_email ON users(email);
```

3. **全文索引**:
```sql
CREATE FULLTEXT INDEX idx_bio ON users(bio);
```

4. **空间索引**:
```sql
CREATE SPATIAL INDEX idx_location ON users(location);
```

5. **复合索引**:
```sql
CREATE INDEX idx_username_age ON users(username, age);
```

通过这些索引类型,可以针对不同的查询需求优化数据库的查询性能。

 

标签:INDEX,name,索引,CREATE,mysql,面试,sql,users
From: https://www.cnblogs.com/zhangzaizz/p/18362956

相关文章

  • MySQL-主主模式集群部署
    目录一、简介什么是双主复制二、服务器规划三、安装MySQL1.下载安装包1.1关闭防火墙2.创建相关目录3.配置环境变量4.初始化数据库A4.1设置环境变量4.2初始化配置文件4.3初始化数据目录4.4配置启动脚本4.5启动MYSQL4.6设置root密码4.7允许root远程登录5.初始化数据库B5.1......
  • 四大笔试2025独家攻略 | 四大真题库、题型、面试技巧全面解析!
    不知不觉,四大2025秋招已然开了2家。想去四大的同学,一般会4家都投,以提高上岸成功率(往年同时拿了几家offer的学长学姐也大有人在)。最近来咨询四大笔试的私信逐渐增多,发现同学们对四大笔试还存有很多疑问:“安永的笔试真的有必要刷公务员的行测题目吗?”(迷茫)“毕马威的GBA真的只......
  • MySql介绍
    MySQL是单进程多线程模型,一个SQL语句无法利用多个cpucore去执行,这也就决定了MySQL比较适合OLTP(特点:大量用户访问、逻辑读,索引扫描,返回少量数据,SQL简单)业务系统key、uniquekey、primarykey:https://blog.csdn.net/nanaMasuda/article/details/52543177sql语句执行顺序(8)S......
  • [笔记]关于在linux中通过yum安装mysql错误--因为Centos 7官方镜像不可用的解决方法
     因为Centos7在2024年6月30号停止维护   在执行命令时找不到镜像源, 在下载时出现的错误为,还有一种错误由于没有截图,但是问题一样先通过yumremovemariadb*-y去删除自带的sql包通过命令编辑这个文本文件 vim/etc/yum.repos.d/CentOS-Base.repo这里举......
  • 【网络工程师模拟面试题】(1)ARP、MAC与Trunk
    一、二层交换机和三层交换机的区别这道面试题主要考验以下几个方面的知识点:网络基础知识对数据链路层和网络层的理解,包括这两层的功能、作用和相关协议。交换机工作原理深入了解二层交换机和三层交换机分别如何处理数据帧和数据包的转发。网络架构和规划考查面试......
  • 常见集合面试篇
    常见集合面试篇LIST一、底层实现1、数据结构-数组1.1为什么数组索引从0开始?从1开始不行吗?1.2操作数组的时间复杂度查询插入和删除2、源码分析2.1成员变量2.2构造方法2.3扩容机制二、面试问题1、ArrayList底层实现原理是什么?2、ArrayList扩容?3、如何实现数组与List之......
  • 【前端高频面试】
    面试题持续更新中。。。面试总结ES6新特性1. 新增块级作用域(let、const)Var变量提升,函数内声明变量函数内有效,函数外部声明全局作用域有效,可重复声明,可在声明前使用。let、const不存在变量提升存在暂时性死区(声明语句前不能被访问或赋值)作用域是块级作用域{}同一作用......
  • MySQL - [18] mysql中关于cascade的用法
    dropdatabase语句用于删除数据库。但如果想要删除一个数据库并且还要删除所有依赖于该数据库的存储过程、函数等,可以使用cascade关键字。dropdatabasetestcascade的效果相当于以下步骤: 一、查询依赖于该数据库的对象SELECT*FROMinformation_schema.VIEWSWHERETAB......
  • MySql计算用户留存率
    定义,每日新增的10个用户,在次日再次登陆有5个记为留存数5个,次日留存率为50%,在第七日还有3个,记为留存数3个,次日留存率为30%;表1:hlj_user_base_info(用户注册表,记录用户注册信息);关键字段,user_id,device_id,register_time表2:hlj_user_click_url_point(用户点击表,记录用户点击行为);关键字......
  • 面试鸭上线了!程序员在线面试刷题神器
    大家好,我是程序员鱼皮。耗时几个月,我们的新项目【面试鸭】已经正式上线了。上线后的鸭鸭是一个题目全面、命中率高、题解优质、持续更新的面试刷题神器!题库包括java基础,Java集合、Java并发编程,JVM,Spring,SpringBoot,微服务,Kafka,分布式,Redis,分布式事务,设计模式,算法......