如何索引数据库?

时间:2015-12-01 23:19:56

标签: mysql database-indexes

这是在扼杀我 - 每个人都说它是什么,但没有人指向指南或教授基础知识。

  1. 从一开始就做得更好,或者如果你的加载时间越来越长,你能否轻松索引?

  2. 有没有人找到任何不是数据库专业人士的好起点? (我的意思是指出起点,不要担心,我知道数据库的基础知识)主要规则,良好做法等。

  3. 我不是要求你写一个巨大的教程,但如果你真的,真的很无聊 - 继续吧。 :)

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

    1. 它几乎没有关系,但我也没有在网上找到答案。我可以猜到答案,但我不是100%肯定 - 使用相同的密钥存储数据的更有效的方式:在数组或单独的行(单独的ID,但相同的键)?每个帖子通常最多有20个项目&未来的帖子数量可能是数千。 哪种解决方案更好?
    2. 不同的行,ID&值但是相同的键

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

很明显,你的ID是你的主要索引,但是假设你有一个页面可以在DATE之前对整个表进行排序,你可以将日期添加为索引。

基本上,索引使引擎更快地找到特定记录或按特定列排序。他们做得更多,但是当我为自己设计网站或为工作中的办公室设置小工具时,我通常只会这样做。

大型企业表可以有数千个索引,甚至表之间的关系更多,但通常对于我们小农民来说,我说的应该就够了。

答案 1 :(得分:0)

你问的是一个非常复杂的问题。但是tl; dr;数据库索引是一种数据结构,它以增加额外写入和存储空间为代价提高数据库表上数据检索操作的速度,以维护索引数据结构。

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