How to split the a table in database?

Sharding is probably not what you want, especially if the admin area is the only problem. If things are working fine on the front end, you’re probably okay.

How many posts are we talking about total?

Some things worth trying (please back up your DB first!):

1. Remove all old post revisions

A quick count of post revisions in my site reveals 5080 of them — there are only a total of 700 posts.

Running a delete query like this should do it. Please test first! Do not just run it on your production database.

DELETE FROM {yourprefix}_posts WHERE post_type="revision";

2. Run an Optimize Table Command

OPTIMIZE TABLE is meant to clean up tables that change frequently. Since you just deleted what was probably a large number of rows, it can’t hurt.

OPTIMIZE TABLE {yourprefix}_posts;

3. Stop WP from Saving So Many Post Revisions

There is a constant you can define in wp-config.php to do this.

You can disable them:

<?php
define('WP_POST_REVISIONS', false);

Or limit them a max number.

<?php
define('WP_POST_REVISIONS', 3);

4. Remove Old/Spam Comments

You could also try removing old spam comments from the comments table as well:

DELETE FROM {yourprefix}_comments WHERE comment_approved != '1';