OK, let's start here - let's get the fragmentation level of your tables/indexes.
Go ahead and run this code.....
Note at the bottom I put a where condition on - to get the frag levels for a single table. So you can filter on a table, or just omit the where clause and get the frag level for all tables.
Let me know the column values for the table(s) in question. Anything over about 30% means the table should be reindexed, and anything well over 50% can definitely be an indicator of sluggish performance. If all the numbers on your major tables are under 30% then the problem is likely elsewhere.
SELECT OBJECT_NAME([OBJECT_ID]) AS TableName,
avg_fragmentation_in_percent AS Fragmentation,
fragment_count, page_count
FROM sys.dm_db_index_physical_stats
(DB_ID(), null, null, null, null)
where OBJECT_NAME([OBJECT_ID]) = 'PurchaseOrderHeader'