MySQL - 索引会加速我的搜索查询吗?

时间:2013-07-26 16:08:50

标签: mysql algorithm search indexing

我有一张医院病人的桌​​子,因此随着时间的推移,这张桌子可能会包含数万行。医院唯一ID号(BIGINT)分配给每个患者,其作为PRIMARY KEY,其余列为VARCHAR或CHAR,以及单个DATE列。据我所知,PRIMARY KEYS会自动编入索引,因此根据患者的ID进行搜索是最佳的(?)。

可以通过单个字段或此ID,姓名,地址,出生日期等组合搜索患者。我可以通过在每个字段上创建INDEX来优化搜索吗?当对这些INDEXed字段的组合执行搜索时,此优化也会起作用,例如

 SELECT * FROM patients WHERE first_name="John" AND address="blah blah blah";

???

另外,我认为MySQL使用自己的内部算法进行搜索,也许二元搜索,用户无法选择或实现自己的算法?

1 个答案:

答案 0 :(得分:0)

来自MySQL文档http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html,这是一个非常有趣的阅读:

  

假设您发出以下SELECT语句:

     

的MySQL> SELECT * FROM tbl_name WHERE col1 = val1 AND col2 = val2;

     

如果col1和col2上存在多列索引,则为相应的行   可以直接获取。如果存在单独的单列索引   col1和col2,优化器将尝试使用索引合并   优化(见