A table with many records get slow to write and read I have a payment service which has the transactions table on MySQL along with other tables:

transactions
-------------
- user_id
- time
- amount
- card_id


Every minute hundreds of transactions occur and many users check their app for transaction history. Sometimes, it gets slow to read and write because of high high load. 

What would be best approach to deal with this situation? 
I am thinking to move transactions table from MySQL to NoSQL technology (MongoDB or Cassandra). Or can I solve this problem on MySql itself? 

UPDATED

Transactions schema: 

CREATE TABLE `transactions` (
  `id` int(10) NOT NULL AUTO_INCREMENT 
  `userid` int(10) DEFAULT NULL  
  `store_id` int(10) DEFAULT NULL 
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `amount` decimal(20,2) DEFAULT NULL 
  `note` varchar(255) DEFAULT NULL 
  `status` int(3) DEFAULT NULL 
  `error_mes` varchar(250) DEFAULT NULL 
  `card_mask` varchar(100) DEFAULT NULL,
  `card_id` int(15) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `tr_store_id_id_fk` (`store_id`)
) ENGINE=MyISAM AUTO_INCREMENT DEFAULT CHARSET=utf8;


Queries: 

- select * from transactions where userid='xxxx'
- select * from transactions where userid='xxxx' and created_at between 'xxx' and 'xxx'
- select * from transactions where userid='xxxx' and card_id='xxx'
- select * from transactions where userid='xxxx' and store_id='xxx'
How can you have PRIMARY KEY(tran_id) without a column named tran_id???

Your queries need at least one index starting with user_id and 3 composite indexes, say:

INDEX(userid, created_at)
INDEX(card_id, userid)
INDEX(store_id, userid)


Surely most of the fields should be NOT NULL??

Bug:  INT(15) will not hold 15 digits; it will hold only 9 (signed 32-bit numbers).  Suggest DECIMAL(16,0) if you are storing credit card numbers.  But then, I would seriously advise hiring a security consultant -- you do not want to lose a laptop full of CC numbers; you will be in deep do-do.