mysql设置外键来查询与不设置外键建立联合查询有什么不同?

huanghaopeng199362 2012-09-07 11:08:51
如题 :
如果我设置了外键,然后用外键来联合查询与不设置外键来联合两个表进行查询有什么不同?求解答?
...全文
715 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanghaopeng199362 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
如题 :
如果我设置了外键,然后用外键来联合查询与不设置外键来联合两个表进行查询有什么不同?求解答?
[/Quote]


是说设置了外键有提高一定搜索速度的效果吗?
huanghaopeng199362 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

外键保证了数据的完整性
[/Quote]

完全是为了保证数据的完整性吗?对于搜索没有影响吗?
rucypli 2012-09-07
  • 打赏
  • 举报
回复
外键保证了数据的完整性
小小小小周 2012-09-07
  • 打赏
  • 举报
回复
要是“不设置外键“的字段有索引,效果差不多。没什么不同。
huanghaopeng199362 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

唯一的差别就是外键会自动创建索引,这样查询时有机会去利用这个索引优化。
[/Quote]

设置索引该如何设计,可以给个方向,应该如何去学吗?
huabing84 2012-09-07
  • 打赏
  • 举报
回复
没差别。只是对索引有影响,如果有外键约束的话,就只能null了,而null影响索引的。(尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。)

ACMAIN_CHM 2012-09-07
  • 打赏
  • 举报
回复
唯一的差别就是外键会自动创建索引,这样查询时有机会去利用这个索引优化。
wwwwb 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 2 楼 的回复:

外键保证了数据的完整性


完全是为了保证数据的完整性吗?对于搜索没有影响吗?
[/Quote]
没有
ACMAIN_CHM 2012-09-07
  • 打赏
  • 举报
回复
没什么差别。
Rotel-刘志东 2012-09-07
  • 打赏
  • 举报
回复
可以建立测试表加外键和不加外键测试一下不就知道了。
explain select * from tb
Rotel-刘志东 2012-09-07
  • 打赏
  • 举报
回复
查询没有什么不同的,关键明白建立外键的作用,保证数据完整性。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧