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

mysql数据库最大索引长度,mysql索引最大长度

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

本文内容列表:

  • 1、mysql数据库varchar最多可以存储多少个汉字和数字?
  • 2、mysql可以设置索引长度吗?
  • 3. MySQL可以创建的最大索引数量以及索引的限制
  • 4、MySQL数据库的索引有哪四种类型?

mysql数据库varchar最多可以存储多少个汉字和数字?

首先确定mysql版本。一般1个汉字为2个字节,50个可存储25个汉字。

在4.0版本下,varchar(100)指的是100字节。如果存储UTF8汉字,只能存储33个(每个汉字3个字节)

5.0以上版本,varchar(100),指的是100个字符。无论是数字、字母还是UTF8汉字(每个汉字3个字节),都可以存储100个。

varchar 的特点

1.它比定长(char)类型占用更少的存储空间(使用 ROW_FORMAT=FIXED 创建的 MyISAM 表除外)。

2。使用 1-2 个额外字节来存储值长度。如果列长度=255,则使用1个字节来存储。在其他情况下,您使用 2 个字节来存储它。例如,varchar(10)将占用11字节的存储空间,varchar(500)将占用502字节的存储空间。

3。它节省了空间,因此性能将很有用。更新需要额外的工作。

以上内容参考:百度百科-varchar

mysql可以设置索引长度吗

是的,索引长度越长,消耗的物理空间就越多。 latin1字符集可以设置索引长度为1000字节,而utf8最大索引长度只能为333。

MySQL可以创建的最大索引数量以及索引的限制

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, 用户名 VARCHAR(16) NOT NULL, INDEX [indexName] (用户名(长度)));

-- 删除索引的语法:

DROP INDEX [indexName] ON mytable;

2. 唯一索引

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

代码如下:

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

--更改表结构

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

-- 直接指定

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

3主键索引

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

代码如下:

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

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

4。组合索引

为了形象地对比单列索引和组合索引,在表中添加多个字段:

代码如下:

创建表 mytable(ID INT NOT NULL, 用户名 VARCHAR(16) NOT NULL, 城市 VARCHAR(50) NOT NULL, 年龄 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 *,其中 YEAR(adddate)2007;

将对每一行起作用,导致索引失败并执行全表扫描。所以可以改为:

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

6。不要使用 NOT IN 和编辑。

三:SQL优化原则

常见的简化规则如下:

1.确保表连接 (JOIN) 不超过 5 个

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

3。使用更少的子查询

4。巢景不要太深。一般来说,最好不要嵌套两个以上的视图。

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

6、最好将连接分成更小的部分,一件一件地进行。

7。优先考虑那些会显着降低结果的化合物。

8。拆分的好处不仅在于它减少了SQL Server优化的时间,而且还在于它允许SQL语句以可预测的方式和可预测的顺序执行。

如果你必须连接很多表才能获取数据,这可能意味着设计缺陷。

MySQL数据库有四种类型的索引?

index ---- 普通索引,数据可以重复,没有任何限制。

unique ---- 唯一索引要求索引列的值必须唯一,但允许零值;如果是组合索引,那么列值的组合必须是唯一的。

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

组合索引----在多个字段上创建的索引。仅当创建索引时的第一个字段用于搜索条件时,才会使用该索引。

全文 ---- 全文索引是针对大表的文本域:char、varchar和text列都可以创建全文索引。主要用于查找文本中的关键词,并不直接与索引中的值进行比较。 。全文更像是一个搜索引擎,与匹配操作一起使用,而不是通用的“where”语句加“like”。

注意:目前仅MyISAM存储引擎支持全文索引。低于5.6的InnoDB引擎版本尚不支持全文索引。

所有存储引擎每张表至少支持16个索引,索引总长度最小为256字节。索引的存储类型有两种,包括B树索引和哈希索引。

索引可以提高查询速度,但创建和维护索引需要时间,而且还会影响插入速度。如果需要插入大量数据,最好先删除索引,插入数据后再创建索引。

版权声明

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

热门