title: SQL Table Split-Is it necessary
body: <p>I've a table with around 6-7lacs records and it's going to grow as time passes.It has around 16-20 columns in it. There are no one-many relationship to any of these columns.</p>
  
  <p>User data entries are stored in these table.</p>
  
  <p>So would it be feasible to split my table into multiple small tables or else just split the table into 2 halfs one with all the entries in it and other the recently fresh records which would be present to the data entry operators to feed in their entries.  </p>
  
  <p>In short my question is whether the mysql execution time would be faster if I split the tables, or would it be faster if I split them into two half's.</p>
  
  <p>I guess the latter would be more feasible since it would not perform any join queries.</p>
  
  <p>Updated:</p>
  
  <pre><code>CREATE TABLE `images` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `primary_category_id` int(10) unsigned DEFAULT NULL,
    `secondary_category_id` int(10) unsigned DEFAULT NULL,
    `front_url` varchar(255) DEFAULT NULL,
    `back_url` varchar(255) DEFAULT NULL,
    `title` varchar(100) DEFAULT NULL,
    `part` varchar(10) DEFAULT NULL,
    `photo_id` int(10) unsigned DEFAULT NULL,
    `photo_dt_month` varchar(2) DEFAULT NULL,
    `photo_dt_day` varchar(2) DEFAULT NULL,
    `photo_dt_yr` varchar(4) DEFAULT NULL,
    `type` varchar(25) DEFAULT NULL,
    `size_width` int(10) unsigned DEFAULT NULL,
    `size_height` int(10) unsigned DEFAULT NULL,
    `dpi` int(10) unsigned NOT NULL DEFAULT '0',
    `dpix` int(10) unsigned DEFAULT NULL,
    `dpiy` int(10) unsigned DEFAULT NULL,
    `in_stock` varchar(50) DEFAULT NULL,
    `outlet` varchar(50) DEFAULT NULL,
    `source` varchar(50) DEFAULT NULL,
    `keywords` varchar(255) DEFAULT NULL,
    `emotional_keywords` varchar(255) DEFAULT NULL,
    `mechanical_keywords` varchar(255) DEFAULT NULL,
    `description` text,
    `notes` text,
    `comments` text,
    `exported_to_ebay_dt` datetime DEFAULT NULL,
    `exported_to_ebay` set('Y','N') NOT NULL DEFAULT 'N',
    `updated_worker_id` int(10) unsigned DEFAULT NULL,
    `updated_worker_dt` datetime DEFAULT NULL,
    `locked_worker_id` int(10) unsigned DEFAULT NULL,
    `locked_worker_dt` datetime DEFAULT NULL,
    `updated_admin_id` int(10) unsigned DEFAULT NULL,
    `updated_admin_dt` datetime DEFAULT NULL,
    `added_dt` datetime DEFAULT NULL,
    `updated_manager_id` int(10) unsigned DEFAULT NULL,
    `updated_manager_dt` datetime DEFAULT NULL,
    `manager_review` set('Y','N') NOT NULL DEFAULT 'N',
    `paid_status` set('Y','N') NOT NULL DEFAULT 'N',
    `exported_to_web_dt` datetime DEFAULT NULL,
    `exported_to_web` set('Y','N') DEFAULT 'N',
    `prefix` varchar(50) DEFAULT NULL,
    `is_premium` set('Y','N') DEFAULT 'N',
    `template` varchar(50) DEFAULT 'HIPE_default',
    `photographer` varchar(100) DEFAULT NULL,
    `copyright` varchar(100) DEFAULT NULL,
    `priority` int(4) DEFAULT '1',
    `step` set('1','2') DEFAULT '1',
    PRIMARY KEY (`id`),
    UNIQUE KEY `part` (`part`),
    KEY `primary_category_id` (`primary_category_id`),
    KEY `updated_worker_id` (`updated_worker_id`),
    KEY `updated_worker_dt` (`updated_worker_dt`)
  ) ENGINE=MyISAM AUTO_INCREMENT=1013687 DEFAULT CHARSET=latin1
  </code></pre>
  
  <p>The above is my table structure.After there are entries being made say around 1lac I would split it into another table say images_history with same structure.Is this feasible or should I split them into multiple tables to reduce the query execution time</p>