我该如何索引这个MySQL表?

时间:2014-05-01 03:50:46

标签: mysql indexing

我有一张包含以下列的表格:

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

哪里

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

我猜我会将imageID编入索引,因为这是最常被引用的内容,但我也会使用albumID来查找相册中的所有图片,所以应该我也把它编入索引?

谢谢!

2 个答案:

答案 0 :(得分:1)

除非你需要,否则不要索引。索引会降低插入和更新的速度。因此,通过添加SELECT中未使用的索引或读取数据,您只是不添加任何值。

启用慢查询日志以查找需要一段时间才能运行的查询。使用这些标识的查询运行带有查询的EXPLAIN语句并分析输出。

你正在通过猜测哪些不起作用来进行优化。当慢速查询没有使用索引时,explain的输出将显示。一旦确定了这些索引,就添加它们。

从未使用的索引会为数据库添加更多空间和更多操作,这会使速度变慢。

答案 1 :(得分:0)

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