我有两个班,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就无法使用索引.“
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。