我的数据库中有一些列,主要是 varchar 255s。它们只被访问一次,但每个页面加载/请求登录用户加载一次。(大多数情况下,它们包含用户偏好等内容)。
我的问题是,我是否应该在这些列上创建索引?我已经在多个查询中使用的其他列上获得了索引,而不是只读取一次并像这些列一样存储。
我的数据库中有一些列,主要是 varchar 255s。它们只被访问一次,但每个页面加载/请求登录用户加载一次。(大多数情况下,它们包含用户偏好等内容)。
我的问题是,我是否应该在这些列上创建索引?我已经在多个查询中使用的其他列上获得了索引,而不是只读取一次并像这些列一样存储。
您只需要用于排序或搜索的列上的索引。
IE。它们出现在JOIN
, WHERE
, HAVING
, GROUP
orORDER BY
子句中。
即使这样,也不是绝对必要的。
答案是这取决于.....看看您的查询计划,添加索引是否有益?
您的查询可能已经被目前那里的索引所覆盖。
请记住,添加索引会减慢更新/插入速度。
我认为答案取决于列是否仅用于选择,或者它们是否用于 where 子句或连接以及其他排序/查询操作。
如果是前者,则没有索引,如果是后者,那么使用索引查询会更快(通常情况下)
如果我没记错的话,索引一列也将取决于那里有多少用户以及每个用户的偏好大小。例如,如果您存储了 1000000 个用户偏好,那么它肯定会有助于对其进行索引。