mysql索引大小和重复问题

时间:2010-07-20 15:30:19

标签: mysql database indexing

我有一些关于数据库索引的一般问题。等待任何问题的答案:

  1. 如何计算索引占用的总内存大小。索引的大小与其Cardinality

  2. 成正比
  3. 我们是否需要索引主键,或者它是否由自己索引。如果主键被索引两次(首先自动创建表,然后手动使用不同的名称),它将如何影响select,insert,update查询的内存和处理速度?

  4. 我们可以在使用组合索引时安排或控制seq_in_index。如果是的话,关于单个索引的基数,最好的方法是什么?

  5. 提前多多感谢!!

1 个答案:

答案 0 :(得分:0)

一个老问题,我很惊讶没有答案。我会刺伤。

  1. 可以使用“SHOW TABLE STATUS”查看表的所有索引的总大小。我担心我不知道如何获得单个索引的真实大小,但它可能就像使用的列的大小和指向行的指针一样简单。索引的大小取决于行数和索引的宽度。由于每行必须出现在索引中,因此基数无关紧要。
  2. 主键自动获取索引。请记住,它是唯一索引,不允许使用NULL(与“普通”索引相比)。除非mysql在封面下是智能的,否则创建第二个索引将创建第二个索引。每个附加索引占用空间(磁盘/内存)和时间(插入/更新/删除)。
  3. 是的,您可以控制复合索引中的序列。我使索引(至少)匹配WHERE子句(包括连接),并且如果可能,包括从该表中SELECTED的列,以便可以从索引收集所有内容,并且不需要读取基础行。至于基数,尽可能快地删除尽可能多的行。
  4. 希望有所帮助。

相关问题