Some of the toughest SQL Server error messages to troubleshoot are memory related. Some error messages are logged and say to "reduce system memory load or increase system memory," but most of the time troubleshooting memory problems in SQL Server is much harder than that. Typically, by the time messages of this type are displayed, the system is in dire need of attention.
When dealing with memory errors and memory problems in general, 95% of the time the memory problem is simply a symptom, not the root cause of the problem. Unfortunately, in cases when the 5% of the time is actually a low memory problem, the diagnoses is going to be an exclusionary diagnoses -- meaning you first have to check the other options. Once you explore and eliminate all other options, the remaining solution is that the server needs more physical memory installed.
Why proper indexing is important for SQL Server memory
The most common root cause of memory pressure is probably incorrect indexing options. As the size of the database increases, you'll want to look more and more into removing clustered indexes from your very large tables. By changing the clustered primary keys to nonclustered primary keys, you'll increase the amount of load on the disk subsystem. But because the clustered index contains the entire table, when the clustered index is loaded into memory, much more memory is used than loading a non-clustered version of the index. This will dramatically