2012-01-02 75 views
2

我要在php中编写搜索脚本(在mysql数据库中),所以我要用索引来做(加快速度)。我有HTML表单这样mysql索引变化

HTML:

<select name="search"> 
    <option value="name">Name</option> 
    <option value="surname">Surname</option> 
    <option value="etc">Etc.</option> 
</select> 

所以我打算写的MySQL索引像这样=>,例如,如果选择的名字,我想创建数据库名称列索引结果想要删除该索引(这一切都与PHP),我会为每个选择选项这样做,所以我感兴趣的是这种方式是正确的,如果不是我该怎么做?此外,该表不会更新,但它也可以添加一些其他数据,在这种情况下,我会遇到索引问题吗?

回答

2

如果我理解正确,你的方法是每次搜索该列时在列上创建一个新的索引?

这绝对不正确。如果表中有任何实际数据量,创建索引可能是一个非常缓慢的过程。一次创建索引/索引。然后,当一个列字段被搜索时,他们会一直在那里。特别是如果你说的话“表格将不会更新”。我从来没有遇到过以编程方式创建然后删除索引的正确方法。

值得注意的是,当你创建一个新的索引时,MySQL会建立一个单独的信息块,然后每次在表中进行更改时都要更新。如果表中的数据量非常大并且频繁更改(迫使索引不断更新),则可能会遇到一些性能问题。然而,我感觉这不是你的情况。

+0

所以我可以创建一些索引(例如4)?并且在一些索引中还有例如2列? – DaHaKa 2012-01-02 17:20:55

+1

是的,你可以做到这一点。 MySQL非常擅长确定用于查询的最佳可用索引。我建议你阅读关于MySQL如何使用索引的[精美MySQL手册条目](http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html)。 – rdlowrey 2012-01-02 17:23:44

+0

感谢您的意见:) – DaHaKa 2012-01-02 17:26:24