0

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

可以通过单个字段或此 ID、姓名、地址、出生日期等的组合来搜索患者。我可以通过在每个字段上创建一个索引来优化我的搜索吗?当对这些 INDEXed 字段的组合执行搜索时,这种优化是否也有效,例如

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

???

另外,我假设 MySQL 使用自己的内部算法进行搜索,也许是二进制搜索,用户不能选择或实现自己的算法?

4

1 回答 1

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 上存在单独的单列索引,优化器将尝试使用索引合并优化(请参阅

于 2013-07-26T16:15:26.497 回答