有一种方法可以索引MySQL中不同表的信息

时间:2012-03-22 21:26:12

标签: mysql sql

我的MySql架构如下所示

create table TBL1 (id, person_id, ....otherData)
create table TBL2 (id, tbl1_id, month,year, ...otherData)

我正在查询此架构

select * from TBL1 join TBL2 on (TBL2.tbl1_id=TBL1.id)
where TBL1.person_id = ?
and TBL2.month=?
and TBL2.year=?

目前的问题是TBL1上有大约18K的记录与某些person_id有关,并且TBL2上也有大约20K的记录与相同的月/年值相关联。

现在我有两个索引。 TBL1(person_id)上的index1和TBL2上的index2上的其他(月,年)

当数据库运行查询时,它使用index1(忽略月份和年份参数)或index2(忽略person_id参数)。因此,在这两种情况下,它都扫描大约20K记录并且没有按预期执行。

有什么方法可以在两个表上创建单个索引,或者告诉mysql在查询时合并de index?

3 个答案:

答案 0 :(得分:0)

不,索引只能属于一个表。您需要查看此查询的EXPLAIN以查看是否可以确定性能问题的来源。

您是否在TBL2.tbl1_idTBL1.id上有索引?

答案 1 :(得分:0)

没有。索引在单个表格上。

答案 2 :(得分:0)

您需要在两个表上包含复合索引,以包含连接列。如果向两个索引添加“ID”,查询优化器应该选择它。

你能发布一个“EXPLAIN”吗?