• I'm not sure what you mean by "a lot of indexing"... The number of indexes you described is moderate, at least from my perspective...

    Depending on the ratio of the messages relevant for sending the hourly email it might be worth trying a filtered index limited to the relevant messages and the columns required to send the email. To avoid frequent page splits you could change the fill factor for that index.

    Assuming the insert is performed using a stored procedure, another option would be a separate "notification table" holding all messages that require notification (again, depending on the ratio of relevant messages and the information that needs to get sent by email). After sending the email I'd probably delete the rows no longer needed to keep this table narrow.

    Regarding the delete issue:

    depending on the number of rows to deal with (in total and to be deleted) it might be worth to look into horizontal partitioning. You could then "just" switch the partition out of the original log table instead of performing the delete operation.



    Lutz
    A pessimist is an optimist with experience.

    How to get fast answers to your question[/url]
    How to post performance related questions[/url]
    Links for Tally Table [/url] , Cross Tabs [/url] and Dynamic Cross Tabs [/url], Delimited Split Function[/url]