Code前端首页关于Code前端联系我们

mysql数据库索引和视图、sql视图创建索引

terry 2年前 (2023-09-30) 阅读数 38 #Mysql
文章标签 Mysql

本文内容概述:

  • 1、mysql如何允许视图使用索引?
  • 2、mysql数据库可以为视图创建索引吗?如果是这样,我该如何创建它?
  • 3、mysql视图中可以创建主键和索引吗? (版本是5.6)
  • 4、mysql有哪些索引?它们在什么场景下使用?

mysql如何允许视图使用索引

1)mysql显示表的状态,其中comment='view'; (注:Mysql5.1支持视图,视图被视为抽象表,所以显示视图状态的命令与显示表状态的命令相同,只是用‘view’来区分在注释栏中)2)mysql select * from information_schema.tables where table_schema='your_database_name' and table_type='display'; (注:此方法搜索系统表,效果与上面相同,并且显示的信息更详细。如果结果不能正确显示,可能是大小写问题。Mysql在不同的配置下可能会显示不同的结果不同系统平台的参数不同,请注意。)

mysql数据库中的视图可以创建索引吗?如果是这样,请告诉我是否创建

MySQL数据库可以为视图创建索引。创作方法是:

1。在为MySQL数据库中的数据表创建索引时,可以在创建表时直接创建索引,如下图创建普通索引。

2。您可以使用说明命令查看正在使用的索引。

3。您还可以创建唯一索引。唯一索引要求约束列的值唯一且不能重复。

4。如果创建时唯一索引列值重复,则无法正常插入,如下所示。

5。此外,您可以通过 multiidx 在同一个表上创建复合索引,如下所示。

6. 您还可以通过create直接向现有表添加索引,如下所示。

mysql视图上可以创建主键和索引吗? (版本为5.6)

不,视图是一个虚拟表,并不实际存在于数据库中,因此没有主键或索引,因为没有行和列。这基本上是一个声明。当调用视图时,管理系统数据库首先查找视图中封装的语句,首先执行生成视图的语句,然后根据视图进行查询

mysql有哪些索引?

在什么场景下使用

1. 普通索引

这是最基本的索引,没有任何限制。有多种创建方法:

1。创建索引

代码如下:

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

如果是CHAR,则类型VARCHAR,长度可以小于字段的实际长度;如果是BLOB和TEXT类型,则必须指定长度,下同。

2。修改表的结构

代码如下:

ALTER mytable ADD INDEX [indexName] ON (username(length)) -- 创建表时直接输入。

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [索引名称] (用户名(长度)) );

-- 删除索引的语法:

DROP INDEX [索引名称] ON mytable;

2.唯一索引

与之前的常规索引类似,不同的是索引列值必须唯一,但允许空值。对于复合索引,列值的组合必须是唯一的。它有以下创建方法:

代码如下:

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

--编辑表结构

ALTER mytable ADD UNIQUE [indexName] ON(用户名(长度))

--建表时直接输入

CREATE TABLE mytable( ID INT NOT NULL, 用户名 VARCHAR(16) NOT NULL, UNIQUE [indexName] (用户名(长度)) );

3.主键索引

是一种特殊的唯一索引,是不允许的。有一个空值。一般情况下,主键索引是在创建表的同时创建的:

代码如下:

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

当然可以使用ALTER语句。请记住:一张表只能有一个主键。

4。复合索引

为了直观地比较单列索引和复合索引,可以在表中添加多个字段:

代码如下:

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

为了进一步提高MySQL的效率,需要考虑创建组合索引。

2:使用索引时的注意事项

使用索引时有几个提示和注意事项:

1。索引不会包含带有NULL值的列​​​​

,如果列包含NULL值,则不会包含在索引中。如果复合索引中的一列包含 NULL 值,则该列对于该复合索引无效。因此,我们在设计数据库时不应该将默认字段值保留为NULL。

2。使用短索引

来索引序列,如果可能的话应指定前缀的长度。例如,如果您有一个 CHAR(255) 列,如果大多数值在前 10 或 20 个字符内是唯一的,则不要对整个列建立索引。短索引不仅可以提高查询速度,还可以节省磁盘空间和 I/O 操作。

3。按索引列排序

MySQL 查询只使用一个索引,因此如果在 where 子句中使用了索引,则按列排序将不会使用该索引。因此,当标准数据库排序能够满足要求时,不要使用排序操作;尽量不要包含多列排序。如果有必要,最好在这些列上创建复合索引。

4.作为语句操作

一般情况下,不建议使用此类操作。如果一定要用的话,使用方法也是一个问题。例如,“%aaa%”不会使用索引,但像“aaa%”会使用索引。

5。请勿使用列

select * from users where YEAR(add)2007;

会对每一行都起作用,导致索引崩溃并进行全表扫描,所以我们可以改为:

select * from users where adddate'2007-01-01';

6。不要使用 NOT IN 和操作。

三:SQL优化原则

常见的简化规则如下:

1.与表的连接 (JOIN) 不超过 5 个

2。考虑使用临时表或变量表来存储临时结果。

3。使用更少的子查询

4。不要将视图放置得太深。一般来说,建议最多嵌套 2 个视图。

5。连接的表越多,编译时间和连接开销就越大,性能也就越难控制。

6。最好将连接分成更小的部分并一次完成一个。

7。优先考虑那些会显着降低结果的连接。

8。分区的好处不仅是减少 SQL Server 优化时间,而且使 SQL 语句能够以可预测的方式和顺序执行。

如果您必须连接许多表才能获取数据,则可能表明存在设计缺陷。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门