实时搜索: mysql 最多几个索引

mysql 最多几个索引

229条评论 4775人喜欢 2286次阅读 513人点赞
...

MySQL一个索引最多有多少个列: MySQL一个索引最多有多少个列?
最多16列。

create table test (
f1 int,
f2 int,
f3 int,
f4 int,
f5 int,
f6 int,
f7 int,
f8 int,
f9 int,
f10 int,
f11 int,
f12 int,
f13 int,
f14 int,
f15 int,
f16 int,
f17 int
);

create index idx_test_16 on test (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16);
create index idx_test_17 on test (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17);

运行结果如下:

mysql> create table test (
-> f1 int,
-> f2 int,
-> f3 int,
-> f4 int,
-> f5 int,
-> f6 int,
-> f7 int,
-> f8 int,
-> f9 int,
-> f10 int,
-> f11 int,
-> f12 int,
-> f13 int,
-> f14 int,
-> f15 int,
-> f16 int,
-> f17 int
-> );
Query OK, 0 rows affected (0.06 sec)

mysql>
mysql> create index idx_test_16 on test (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> create index idx_test_17 on test (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17);
ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed
mysql>

mysql 索引 区分度多少合适: 1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

在mysql 添加联合索引的时候这几个字段怎么排列顺序啊,: 字段呢

mysql 数据库里搜索商品名称,但是name(varchar)字段没建立索引,用什么方法效率最高?: 单独的索引和复合索引的索引。单一索引,只包含单个列,一个表可以有多个单独的索引,而不是索引的组合的索引。综合指数,即包含多个列的电缆。
MySQL索引的类型包括:

(1)一般指数

这是最基本的索引,它没有任何限制。它创造了几种方法:

◆创建一个索引

CREATE INDEX INDEXNAME ON mytable的(用户名(长度));

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

◆表结构

ALTER mytable的ADD INDEX [INDEXNAME]开(用户名(长度))

◆当您创建一个表直接指定

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

删除索引的语法:

DROP INDEX [INDEXNAME] ON mytable的;

(2)唯一索引

它类似于以前的一般指标,不同的是:索引列的值必须是唯一的,但是允许空值。如果它是一个综合指数相结合,列值??必须是唯一的。它创造了几种方法:

◆创建一个索引

CREATE UNIQUE INDEX INDEXNAME ON mytable的(用户名(长度))

◆表结构

ALTER mytable的ADD UNIQUE [INDEXNAME]开启(用户名(长度))

◆当您创建一个表直接指定

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

(3)主键索引

这是一个特殊的唯一索引不允许空值。一般的时候同时创建主键索引的表的结构:

CREATE TABLE mytable的(ID INT NOT NULL,用户名VARCHAR(16)NOT NULL,PRIMARY KEY(ID));
>当然,你可以使用ALTER命令。请记住:一个表只能有一个主键。

(4)综合指数

对于图像的对比度和组合索引单列索引,添加更多的字段的表:

CREATE TABLE mytable的(ID INT NOT NULL,用户名VARCHAR(16)NOT NULL ,城市VARCHAR(50)NOT NULL,年龄INT NOT NULL);

为了进一步榨取MySQL的效率,就要考虑建立组合索引。是的名称,城市,年龄建成一个索引,其中:

ALTER TABLE mytable的ADD INDEX name_city_age(名(10),城市,年龄);

建立表时,16 usernname长度,其中10。这是因为在正常情况下不超过10名,这将加快查询速度索引的长度,该指数将减少文件大小,提高INSERT的更新速度。

如果您创建的每个usernname一个单独的索引,城市,年龄,所以该表有三个单独的索引,上面的查询和索引的组合效率会有很大的不同,远远超过我们的组合索引少。虽然此时有了三个索引,但MySQL只可以使用它们认为这似乎是最有效的单一指标。

建立这样的组合索引,其实是三组相当于建立了以下综合指数:

usernname,城市,年龄usernname,城市usernname

为什么没有城市,年龄该做组合索引?它是一个综合指数,因为MySQL的结果“最左前缀”一个。这只是意味着,左侧只有从一开始的组合。不仅包含了这三个疑问将在综合指数中使用,下面的几个SQL就会使用这个组合索引:

SELECT * FROM mytable的WHREE用户名=“管理员”和城市=“郑州”SELECT * FROM mytable的WHREE用户名= “管理员”

接下来的几个未使用:

SELECT * FROM mytable的WHREE年龄为20及城市=“郑州”SELECT * FROM mytable的WHREE城市=“郑州”

(5)索引时间

在这里,我们已经学会了建立索引,那么我们需要在什么情况下创建索引?通常,当连接列和出现在需要建立索引,但也不完全如此,因为MySQL只<,,> =,BETWEEN,IN,LIKE,有的时候会使用索引。例如:

选择t.Name FROM mytable的吨LEFT JOIN mytable的M于t.Name = m.username WHERE m.age = 20和m.city ='郑州'

这时候就需要城市与年龄索引,由于userame mytable的表也出现在JOIN子句中,也有必要建立索引。

只是它需要像索引的时候一定提及。因为在一开始通配符%和_的查询,MySQL不会使用索引。例如,下面的语句将使用索引:

SELECT * FROM mytable的其中username like'admin%'

下一句不会使用:

SELECT * FROM mytable的WHEREt名称LIKE'% admin的

因此,更应注意使用LIKE差异。

(6)指数

的不足之处上面是说使用索引的好处,但过量使用索引将会造成滥用。因此,该指数也有其缺点:

◆虽然索引大大提高了查询速度,但会降低更新表,如表的INSERT,UPDATE的速度和DELETE。因为当你更新表,MySQL只保存数据,而且还节省大约索引文件。

◆建立索引会占用磁盘空间的索引文件。通常这个问题不是太严重,但如果你是在一个大表创建各种复合索引,索引文件将很快扩大。

指数只是其中的一个因素,以提高效率,如果你有大量的数据的MySQL表,你需要花时间去研究建立最佳的索引,或优化查询。

(7)使用索引

注意事项使用索引时,下面的一些技巧和注意事项:??

◆索引不会包含NULL值的列只要列中包含 BR />有NULL值?将不会被包含在索引中,复合索引,只要有包含NULL值的列,那么这个列是此复合索引无效。所以,我们不要让默认字段为NULL的数据库设计。

就用短串联指数指标,如果可能的话,你应该指定一个前缀长度。例如,如果一个CHAR(255)列,如果在前10或20个字符之内,多个值?是独一无二的,那就不要索引整个列。短索引不仅可以提高查询速度而且可以节省磁盘空间和I / O操作。

◆索引列排序

MySQL查询只使用一个索引,因此如果where子句已在索引中使用,然后按列的顺序将不会使用索引。因此,不要使用默认的数据库排序时排序操作即可满足要求;尽量不要包含多个排序列,如果需要的话最好创建这些列的一个综合指数。

◆like语句

在正常情况下运行不鼓励使用类似的操作,如果非使用不可,如何使用也是一个问题。如“%AAA%”不会使用索引而不是像“AAA%”可以使用索引。

◆不要在列选择*从用户那里YEAR(录入)<2007年

操作将在每个行上进行的,这将导致失败而进行全表索引扫描,所以我们可以改变

选择*从用户那里录入时间<'2007-01-01';

◆不使用NOT IN和>

更多操作上的MySQL索引类型进行了介绍。
转移: http://www.zbitedu.com/action-viewthread - TID-33491

mysql分别用数字INT和中文varchar做索引查询效率上差多少: INT效率高,打个比方10以上就是11,但是'10'之后不是'11'

Mysql支持哪几种索引: 从数据结构角度
1、B+树索引(O(log(n)))。
2、hash索引:
a 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询
b 其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引
c 只有Memory存储引擎显示支持hash索引
3、FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)
4、R-Tree索引(用于对GIS数据类型创建SPATIAL索引)
从物理存储角度
1、聚集索引(clustered index)
2、非聚集索引(non-clustered index)
从逻辑角度
1、主键索引:主键索引是一种特殊的唯一索引,不允许有空值
2、普通索引或者单列索引
3、多列索引(复合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合
4、唯一索引或者非唯一索引
5、空间索引:空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建
CREATE TABLE table_name[col_name data type]
[unique|fulltext|spatial][index|key][index_name](col_name[length])[asc|desc]
1、unique|fulltext|spatial为可选参数,分别表示唯一索引、全文索引和空间索引;
2、index和key为同义词,两者作用相同,用来指定创建索引
3、col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择;
4、index_name指定索引的名称,为可选参数,如果不指定,MYSQL默认col_name为索引值;
5、length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;
6、asc或desc指定升序或降序的索引值存储

MySQL-mysql 在什么情况下group by效率最高: 让group by 使用索引而不创建临时表,
使用索引的前提条件是:所有GROUP BY列引用同一索引的属性,并且索引按顺序保存其关键字(B-树索引,不是HASH索引)
至于DISTINCT 和GROUP BY哪个效率更高?
理论上 DISTINCT操作只需要找出所有不同的值就可以了。而GROUP BY操作还要为其他聚集函数进行准备工作。从这一点上将,GROUP BY操作做的工作应该比DISTINCT所做的工作要多一些。
但是实际上,DISTINCT操作,它会读取了所有记录;GROUP BY需要读取的记录数量与分组的组数量一样多,比实际存在的记录数目要少很多。

如何给mysql的自增项加索引: 这个不用加了吧,自增项本身就默认加索引了吧

  • ff什么意思

    周杰伦是谁?: 周杰伦(Jay Chou),华语流行男歌手、演员、词曲创作人、MV及电影导演、编剧及制作人。2000年被吴宗宪发掘并推出首张专辑《Jay》;2001年发行专辑《范特西》逐步奠基其在亚洲流行乐坛地位;2002年在中国、...

    549条评论 1970人喜欢 3102次阅读 565人点赞
  • marlboro是哪里的

    我记得有一段歌词我一个人入睡我一个人冷冷醒来.一个人发呆.是什么歌: 爱我你给的幸福不是我想要的歌曲原唱 :六哲墙上的照片勉强留着爱过的容颜  瞬间的感动留不住那誓言床头杯上面是你留言字迹已褪浅  卡片背后的时间已是去年面对着一屋的悲哀  幸福将我淘汰眼看着你无情的等待  我拿什么爱拿...

    769条评论 2131人喜欢 6303次阅读 542人点赞
  • 2016年5月南陵县卫计委主任是谁

    dnf 装备弄的差不多了 差点钱换武器 想问下 怎么搬砖挣钱快 多说集中方法 谢谢!~~~: 亲好哦 很高兴为你解答 我是比较喜欢去楼梯和发电站3 搬砖的 运气好点可以出粉呢 就赚了哈哈亲其实我除了你玩的游戏,这段时间我还有接触到一款游戏,感觉还蛮不错的,叫做王-牌对.决,据说是有史以来角色最多的游戏了,一共...

    312条评论 5545人喜欢 2628次阅读 460人点赞
  • dnf需要什么配置

    几种常用的股价指数是什么?: 一、上证综指即上海证券综合指数,是上海证券交易所编制的,以上海证券交易所挂牌上市的全部股票为计算范围,以发行量为权数综合.上证综指反映了上海证券交易市场的总体走势。以1990年12月19日为基日,以该日所有股票的市价...

    849条评论 3210人喜欢 3333次阅读 247人点赞
  • mysql如何学习

    MBA考试都包括什么?: MBA考试科目有哪些 MBA考试科目有哪些?想要报考MBA考试的小伙伴,肯定特别想知道MBA是什么,MBA要考哪些科目,怎么考?这些热门问题,众凯小编帮大家详细的梳理一下。MBA是工商管理类硕士研究生学位,参加MBA...

    449条评论 3881人喜欢 4078次阅读 643人点赞
  • 18 6是多少

    扬州大学MBA复试考什么内容?: 复试包括: 政治理论考试、英语听力和口语测试、综合素质面试。 ...

    529条评论 1020人喜欢 2394次阅读 616人点赞