构建一个带有php的mysql搜索系统,制作索引

时间:2012-12-14 20:56:50

标签: php mysql

我问过什么是创建没有lucene,sphinx,solr等库的搜索系统的最佳方法的问题。

人们不断告诉我你可以创建一个索引,我可以使用专用的索引表来模拟mysql内部的索引,搜索很多表并不是一个好主意。有一个索引要好得多。 index可以是单个结构化数据库表,也可以是像sphinx或lucene这样的外部引擎,我不会使用它。

请解释一下索引的实际含义是什么?我只知道我应该为ID指定PRIMARY KEY并使其自动递增,PRIMARY KEY将使其独特,因此ID号将不相同。这些索引是人们告诉我直接与PREXARY KEY旁边的INDEX相关联还是什么?

我无法在互联网上找到任何解释,所以如果有人帮助我,我会非常感激。

1 个答案:

答案 0 :(得分: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