以示例理解"Using filesort"形成:查询create_date排序,由于create_date未建索引,使用无索引字段时出现"Using filesort"。建立create_date索引后,结果不再出现。若需查询user_id,依然需回表操作,利用聚集索引性质,分页查询id避免"Using filesort",分页数据量查询整体性能提升。
filesort使用的算法是QuickSort,即对需要排序的记录生成元数据进行分块排序,然后再使用mergesort方法合并块。其中filesort可以使用的内存空间大小为参数 sort_buffer_size 的值,默认为2M。当排序记录太多sort_buffer_size不够用时,mysql会使用临时文件来存放各个分块,然后各个分块排序后再多次合并分块最终全局完成排序。...