如何索引数据库?

How to index database?

这让我很难受 - 每个人都说这是什么,但没有人指出指南或教授基础知识。

  1. 是否从一开始就做得更好,或者如果您的加载时间越来越长,您是否可以轻松地对其进行索引?

  2. 有没有人为非数据库专业人士找到好的起点? (我的意思是索引起点,别担心,我知道数据库的基础知识)主要规则,良好实践等

我来这里不是要你写一个庞大的教程,但如果你真的非常无聊,那就继续吧。 :)

如果知道这一点很重要,我正在使用 Wordpress。是的,我知道 WP 使用非常基本的索引,但如果从一开始就很好,我看不出为什么不这样做。


  1. 几乎没有关系,但我也没有在网上找到答案。我可以猜到答案,但我不是 100% 确定 - 使用相同键存储数据的更有效方法是什么:在数组或单独的行中(单独的 ID 但相同的键)?通常每个 post 最多有 20 个项目,并且 post 的数量将来可能会达到数千个。 哪个是更好的解决方案?

不同的行、ID 和值但相同的键

id | key |values|
--------------------
25 | Bob | 3455 |
--------------------
24 | Bob | 1654 |
--------------------
23 | Bob | 8432 |

同一行,id & key 但是值是序列化数组

id | key |      values      |
------------------------------
23 | Bob | serialized array |
------------------------------

如果您想要一个快速的经验法则,请索引 table 中您将用于查找行的任何列。例如,我可能有一个 table 如下:

id| Name| date     |
--------------------
0 | Bob | 11.12.16 |
--------------------
1 | John| 15.12.16 |
--------------------
2 | Tim | 19.12.16 |

显然您的 ID 是您的主要索引,但假设您有一个页面将按日期对整个 table 进行排序,那么您可以添加日期作为索引。

基本上,索引使引擎可以更快地查找特定记录或按特定列对它们进行排序。他们做的更多,但当我为自己设计网站或为办公室设计小工具时,我通常会这样做。

大企业table可以有几千个索引,table之间的关系就更多了,但是对于我们这些小农来说,我说的应该就够了。

你在问一个非常复杂的问题。但是 tl; 博士;数据库索引是一种数据结构,它以额外的写入和存储为代价 space 来提高数据库的数据检索操作速度 table 以维护索引数据结构。

更详细的信息已在此处的详尽答案中提供: How does database indexing work?