• If you are at the target memory, then you are fairly close to what is needed.

    Having heaps can be a problem for performance, but not necessarily. Is there a reason you don't have clustered indexes on these tables? Clustered indexes do allow for potentially quicker access to data that is looked up with a non-clustered index.

    Slowness might be because of poor design, poor queries, or something else. It isn't necessarily memory. You could have the table loaded into memory, but if you need to access it 100x to satisfy a poorly written query, it will still take time to process the query.