I am trying to understand how BCP's -F (first row) and -L (Last Row) option works i.e How does its pointer goes to specific locations and selecting only defined rows without doing any row number calculation like Row_number(). I am trying to BCP out very large table into smaller files by running multiple thread of BCP with different first row and last row but it appears to be performing very slow. So i am trying to understand why.