0

我已经询问了有关在没有 lucene、sphinx、solr 等库的情况下创建搜索系统的最佳方法的问题。

人们不断告诉我诸如您可以创建索引之类的事情,我可以使用专用表在 mysql 中模拟索引,在许多表中搜索并不是一个好主意。最好有一个索引。index 可以是单个结构化数据库表或外部引擎,例如我不会使用的 sphinx 或 lucene。

请解释一下索引实际上是什么意思?我只知道我应该为 ID 分配 PRIMARY KEY 并使其自动递增,PRIMARY KEY 将使其成为唯一的,因此 ID 号将不一样。人们告诉我的这些索引是与 PRIMARY KEY 旁边的 INDEX 直接相关还是什么?

我在互联网上的任何地方都找不到解释,所以如果有人帮助我,我会非常感激。

4

1 回答 1

0

MySQL 归根结底实际上只是一个非常复杂且功能强大的字符串解析引擎。您发送的所有数据都以类似字符串的值形式存储在文件中。MySQL 是用 C 语言构建的,它负责管理处理以执行您运行的所有查询。

索引是您的表中的数据列表,其映射方式与主 ID 的映射不同。索引的基本目标是允许您使用的 MySQL 引擎更快地搜索您的表。这是因为在实践中,索引能够排除表中已知不存在您要查找的记录的大部分部分。主键是 id 值的索引,但您可以在任意列上创建索引,如下所示:

CREATE INDEX user_id_index ON meta (user_id);

一个表可以有多个索引用于不同的事物,这没关系。通常你会发现你正在通过不同的值引用一个表,也许你会想要为每个值创建一个索引。明智地索引很重要,因为索引错误的列可能会减慢查询速度。您必须阅读整个链接才能很好地理解正在发生的事情,但请记住,索引基本上是一个文件,它允许通过您的一个表中的列进行查找更快地发生:

http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

于 2012-12-14T21:23:25.830 回答