• 叶明
    2024-10-16 来自江苏
    1、对 SQL 性能的影响,t1.s1 和 t2.s2 这两个字段来源不同表,并且没有关联关系,驱动表只有一个,当其中一个字段有序时,无法保证另一个字段也有序,因此必须使用到临时表和文件排序,另外如果数据量较大,则还会使用到更慢的磁盘临时表来处理。 2、如果只使用一个表的字段来排序,性能上会有什么区别吗?如果表上这一个用来排序的字段上有索引,那么以这个表作为驱动表,一来不用建立临时表和排序,只需要有序遍历这个索引的前 100条记录就可以返回了,二来只用返回 100 条数据,大大减少了扫描行数

    作者回复: 是的。 我觉得这里比较大的一个区别是,如果用了多个表的字段来排序,那么需要将表连接操作全部执行完成后,才开始排序。 如果只用到一个表的字段排序,就有机会先对这个表的数据进行排序,然后再去连接其他表,到达limit的记录数之后,就可以退出查询了。

    
    