For performance, this can assist by giving you access to different and/or dedicated physical media.
For backups and restores, you may find it useful to perform backups on filegroups or files.
And it is usually simple enough to move tables from filegroup to filegroup, except when that table is without a clustered index (a heap).
Our sample setup:
--Create our sample heap
--Add a Primary Key Clustered Index on the PRIMARY file group
Here's how to move a table with a clustered index from the default [PRIMARY] filegroup to a new filegroup called [SECONDFILEGROUP]. The key is the DROP_EXISTING.
But what if we don't have a clustered index? Simple enough, just remove the bit about DROP_EXISTING.
DROP INDEX PK_LARGELOGTABLE ON dbo.LARGELOGTABLE
Notice that I didn't specify UNIQUE in that CREATE CLUSTERED INDEX command. It created a non-unique clustered index. If your table doesn't have a clustered index or a unique column? No problem, same strategy.
Also, don't forget that DROP INDEX line... though you really should be asking yourself if adding a CLUSTERED INDEX to that table is a good idea (it is).
A non-unique clustered index is better than no clustered index. Would I ever intentionally design a non-unique clustered index? Not in an OLTP system. Maybe a data warehouse, but I've made design decisions to avoid that. I always prefer something to be unique in a table. But I digress.