SQL查询执行速度

时间:2015-07-05 13:48:22

标签: sql execution

就sql中的执行速度而言,在2个不同的表中使用名称“image”和“video”或1个名为“media”的表和名为“type”的列是否更好?

这2个查询的执行速度是否相同?

'SELECT * FROM image WHERE id = x';

'SELECT * FROM media WHERE id = x AND type =“image”'

2 个答案:

答案 0 :(得分:2)

没什么区别。为了提高性能,您的表应该有一个索引(第一个是image(id);第二个是media(id, type))。

media表的效率略低,因为记录较大:类型信息存储在每一行上。这导致相应的表格中有更多的数据页面,这种效果只有在您开始拥有数百万条记录时才会很重要。

平衡这是在单个表中存储内容的(潜在)优势。如果您具有可以是图像或视频的外键关系,则可以将单个MediaId用于该关系。如果您有两个组合的查询(用户拥有多少“媒体”?),那么将它们放在同一个表中是一个优势。如果它们具有其他公共属性(例如创建时间,字节大小,格式等),则将它们放在一个表中可提供单个参考点。

换句话说,性能差异可以忽略不计。数据模型应基于应用程序的实体描述。

答案 1 :(得分:0)

正如@GordonLinoff所说,你应该更好地照顾你的数据模型;并且一定要有索引。

只有您拥有数百万的记录,才能实现此类优化注意事项。

另外注意:如果您有两个单独的表,那么理论上您可以将它们放在不同磁盘上的两个单独的表空间中。因此,服务器可以并行地从两个表中获取数据,这将获得速度。