2014-05-01 114 views
0

我有一个表具有以下的列:我该如何索引这个MySQL表?

(imageID, albumID, accountID, imageLoc, albumLoc, and uploadDate) 

  • imageID是每个图像的唯一标识符,
  • albumID是其专辑中的图像属于标识,
  • accountID是图片所属帐户的编号,
  • imageLoc是图像在服务器上的位置,
  • albumLoc是图像在相册中的位置(例如,专辑的第3张图片)和
  • uploadDate是图片上传的日期。

我猜我会指数imageID,因为这是发生了什么事情被称为最,但我的“M也将使用该albumID发现相册中的所有图像,所以我应该索引吗?

谢谢!

+0

我只会索引唯一标识符imageID ...至少,这是我如何构建我所有的表 –

+0

'imageID'是主键?请向我们展示一些查询和完整模式以获得正确答案。 –

回答

1

不要索引,除非你需要。指标通过添加未在SELECT或者你只是不添加值数据的读取使用的索引减缓插入和更新。所以,

启用慢查询日志到fi nd需要一段时间才能运行的查询。使用这些已识别的查询,通过查询运行EXPLAIN语句并分析输出。

你正在通过猜测哪一个不起作用来进行优化。解释的输出将显示缓慢查询何时不使用索引。一旦你确定这些索引添加它们。

从不使用的索引为数据库增加了更多的空间和更多的操作,使其变得更慢。

0

虽然我部分赞同Namphibian,但我不同意不要索引,除非你需要。用于加入目的的主要ID的索引显然是您需要的。但是,如果您正在投影的查询也会定期使用您的相册ID,那么我会抢先索引(主ID,相册ID),因此它将涵盖联接和查询条件。或者,根据情况,可能会更好(专辑ID,主要ID)..再次,基于如何查询条件的目的。

+0

我同意你的看法,但由于我没有真正的表格结构来处理我而不是猜测。没有主键和外键的索引是如此基本,甚至没有进入我的想法。 – Namphibian

相关问题