If BPASession table is defragmented, then literally an hour later it is fragmented back by 40% or more. 
 The reason for this behavior is that the table has a clustered index on the sessionid field, which has a unique identifier type 
 When a new row is added, a unique GUID is generated for it, since it is not sequential, then the insertion occurs not at the “end”, but at the “center” of the table with a very expensive splitting operation. 
 According to MS SQL algorithms, page splitting occurs as follows: 
 A new page (8Kb) is allocated and a half of the primary is copied to it, then a new line is inserted on the primary page. On average, adding a new line to BPASession results in copying / moving 15 “old” lines. Which leads to strong fragmentation. 
  
 There are three ways of how to resolve this: 
  
 - Generate a new GUID, not by the NEWID () function, but by the NEWSEQUENTIALID () function, which creates sequential GUIDs. 
  
 - move the cluster index from the BPASession.sessionid column to the BPASession.sessionnumber column of type INT IDENTITY (1,1) 
  
 - move the cluster primary key from the BPASession.sessionid column to the BPASession.sessionnumber column 
						
					
					... View more