ThinkGeo.com    |     Documentation    |     Premium Support

Bug in MSSQL2008Layer BuildIndex method?

 


 Can someone verify this for me. Thanks in advance. 


The time takes to execute either




        
  • sql2008Layer.BuildIndex(BuildIndexMode.Rebuild);                       

  •     
  • sql2008Layer.BuildIndex(BuildIndexMode.DoNotRebuild);


takes approx the same time. I am assuming BuildIndexMode.DoNotRebuild will not rebuild the index and doesn't have much overhead if the index exists? The API states BuildIndexMode.DoNotRebuild as "Do not rebuild the index if it exists". 


I am interested to know how i can check if an index exist for any given MSSql2008Layer? This should enable me to decide whether to call BuildIndex or not. 




Keith,


Thanks for your post and questions.
We use a SQL statement to query on the system table to see if the index was built or not, you can use the following way to see what statement it is by hooking up the event.

((MsSql2008FeatureSource)(msSqlFeatureLayer.FeatureSource)).ExecutingSqlStatement += new EventHandler<ExecutingSqlStatementMsSql2008FeatureSourceEventArgs>(DisplayShapeMap_ExecutingSqlStatement);
 
void DisplayShapeMap_ExecutingSqlStatement(object sender, ExecutingSqlStatementMsSql2008FeatureSourceEventArgs e)
{
    if (e.ExecutingSqlStatementType == ExecutingSqlStatementType.BuildIndex)
    {
         string str = e.SqlStatement;
    }
}

Any more questions please feel free to let me know.
Thanks.
Yale