Mysql查询优化

时间:2013-10-23 06:35:32

标签: mysql

我有两个表“Category”表,其中一列是“category name”和“Professional”表,其中一列是“category id”。

现在我在“类别表”中搜索某些类别,然后找到那些拥有该类别的专业人士。

我面临的问题是,如果加入“专业”和“类别”表,它看起来好像正在搜索“专业”表中的太多行。 (如果我错了,请忽略)

是否可能仅在“类别”表中从搜索返回的那些行上发生连接。 enter image description here

explain select c.id from professional_categories as c  
inner join professionals as p  on p.professional_category_id=c.id 
where c.professional_category_name like 'ABC%'

以下是专业表的索引。 enter image description here

1 个答案:

答案 0 :(得分:0)

您需要在 index 表格的professional_category_id上创建 professionals

这将有助于更快和最少的搜索记录。

替代

使用参照完整性约束也可以解决此问题,如下所示:

如果专业表的 professional_category_id 属性为外键,则引用 category_name 属性类别表也可以实现。此外键密钥还有助于更快/最小搜索。在这种情况下,您无需明确 professional_category_id 属性上创建任何索引