回答

收藏

外键必须在mySQL中为Index?

技术问答 技术问答 182 人阅读 | 0 人回复 | 2023-09-14

我刚刚创建了自己的第一个mySQL表(不是使用Joomla,Wordpress等),并且我是MS SQL开发人员多年,但是通常我可以轻松地在MS
& ~; L2 F4 d; Z/ e1 h/ }& TSQL中创建外键,但是遇到了困难或这里缺乏知识。; e9 f8 k+ J  H6 @
这是我的桌子:" B9 P" I1 P' w/ J; X
使用者0 G/ |8 _  ?% K9 _' F* F7 c& N2 S
[ol]user_id int主要auto_increment! o& f! {( O0 @  T4 C
用户名varchar(20)
! i' }- Q, G1 {) |. A$ V" M2 F4 T6 a2 q密码varchar(20). y  M: j" Q; J$ @
[/ol]
3 h  }' R1 e$ c2 l$ N! J帖子
  s: o- [8 T" F5 u5 }! ^, R! y[ol]主auto_increment中的post_id
( @9 u$ b9 a1 q; u' K# ?4 D标题varchar(100)
7 r/ _1 E4 C/ |1 `3 d" u讯息文字" u! {* P, \* K! j+ |' O( J
user_id int
: N, k/ P1 e+ o9 ]. ?7 M, [[/ol]
3 w  x( v; ]5 _2 D9 E当我尝试向引用的用户添加外键时posts->user_id,无法posts->user_id在mySQL面板上的选项列表Relation_view窗口中看到该选项。5 s9 ^: D- m. K" w
我想知道是否应该定义posts->user_idasIndex或某物?如果是这样,为什么?, g* k0 U8 `# H; z- P
                * K/ p3 ^1 P' o: ~
解决方案:
3 g8 O) e* j* ~0 y! `5 @               
7 j. i  ^9 ~4 J6 R0 _5 M) N* T1 F% m0 X; _, E8 Q! q8 j3 K$ M  W

/ j+ h0 U; X. \9 P6 o3 H5 |! M                简短的答案:是的,MySQL会强制您索引外键。
6 q0 L/ i! ^9 N; I0 J4 h8 k. T& V0 f
InnoDB要求在外键和引用键上建立索引,以便外键检查可以快速进行,而无需进行表扫描。
0 U9 t  ^) w) G# q, v; Z& q- x9 @
您可以在MySQL文档页面上阅读有关外键的更多信息:http : //dev.mysql.com/doc/refman/5.5/en/innodb-! v  r" T2 @8 P/ s0 X
foreign-key-constraints.html
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则