加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

两列上的MySQL主键是否有助于第二列上的查询?

发布时间:2021-04-01 19:33:42 所属栏目:MySql教程 来源:网络整理
导读:我有两个班,Foo和Bar.每个酒吧将包含许多Foos. Foos可以在多个Bars中,但每个Foo只能在给定的Bar中.我有以下表结构: CREATE TABLE `bar_foos` ( `bar_id` INT UNSIGNED NOT NULL,`foo_id` INT UNSIGNED NOT NULL,PRIMARY KEY ( `bar_id`,`foo_id` )); 这应

我有两个班,Foo和Bar.每个酒吧将包含许多Foos. Foos可以在多个Bars中,但每个Foo只能在给定的Bar中.我有以下表结构:

CREATE TABLE `bar_foos` (
   `bar_id` INT UNSIGNED NOT NULL,`foo_id` INT UNSIGNED NOT NULL,PRIMARY KEY ( `bar_id`,`foo_id` )
);

这应该适用于我的多对多关系.我的问题是,如果我希望我的代码能够检查Foo是否被任何Bars使用,I.E.告诉用户“这个Foo无法被删除,因为它正被5个柱子使用”,PRIMARY KEY索引是否帮助我查询

SELECT * FROM `bar_foos` WHERE `foo_id`=2

要么

SELECT COUNT(*) FROM `bar_foos` WHERE `foo_id`=2

或者,我是否只需要一个单独的foo_id列索引? 最佳答案 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

“如果表具有多列索引,则优化程序可以使用索引的任何最左前缀来查找行.例如,如果在(col1,col2,col3)上有三列索引,则已编制索引搜索(col1),(col1,col2)和(col1,col3)的功能.

如果列不构成索引的最左前缀,MySQL就无法使用索引.“

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读