The xpos, ypos has spatial calculations applied to track distance between the values. I use to run it all using an update where x = y structure and it took twice as long. Mainly because it was doing a lot of table scans.