我应该在这些列上创建索引吗?

时间:2011-05-12 17:02:46

标签: mysql performance indexing query-performance

我的数据库中有一些列,大多数是varchar 255s。它们只被访问一次,但是对于登录用户,每次加载/请求时它们被加载一次。 (大多数情况下,它们包含用户偏好等内容。)

我的问题是,我应该在这些列上创建索引吗?我已经在其他列上获得了多个查询中使用的索引,而不是只读取一次并像这些列一样存储。

4 个答案:

答案 0 :(得分:6)

您只需要用于排序或搜索的列的索引。

即。它们出现在JOINWHEREHAVINGGROUPORDER BY条款中。

即使这样,也没有必要。

答案 1 :(得分:3)

答案是否取决于.....看看您的查询计划,是否有利于添加索引?

您的查询可能已经包含在目前的索引中 请记住,添加索引会降低更新/插入速度。

答案 2 :(得分:3)

我认为答案取决于列是仅用于选择,还是用于where子句或连接以及其他排序/查询操作。

如果是前者,没有索引,如果是后者那么查询会更快地使用索引(通常很好)

答案 3 :(得分:2)

如果我没有错,索引列也将取决于有多少用户以及每个用户的首选项大小。例如,如果您存储了1000000个用户首选项,那肯定会有助于对其进行索引。