在Codeigniter中如何提高Rest Web服务的Mysql性能?

时间:2015-09-03 09:56:50

标签: php mysql performance codeigniter rest

我有一个表,其中有一列用于存储Facebook ID,消息等...现在我有1000条记录。 这是我的表结构。

CREATE TABLE IF NOT EXISTS `user_notification` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `facebook_id` varchar(20) NOT NULL,
  `preference_id` int(11) NOT NULL,
  `notification_id` int(11) NOT NULL,
  `message` text NOT NULL,
  `status` int(11) NOT NULL COMMENT '0 means unread 1 means read',
  `timestamp` varchar(20) NOT NULL,
  `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `facebook_id` (`facebook_id`),
  KEY `status` (`status`),
  KEY `timestamp` (`timestamp`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

我使用代码点火器编写了一个Rest Web服务,就像通过Facebook id我正在生成一个基于该Facebook id的消息列表。事情是它花了太多时间加载休息客户端(1000毫秒)和移动。

我用来生成这样的结果的查询

"SELECT id, facebook_id,`notification_id`, `message`, `status`,preference_id,timestamp FROM `user_notification` WHERE  facebook_id='" . $facebook_id . "'  and timestamp >='" . $timestamp . "' and status!='2' ORDER BY timestamp DESC"

他们有什么方法可以改善加载时间吗?

我试过存储过程也没有任何改进。

1 个答案:

答案 0 :(得分:1)

此复合索引将更有效:

INDEX(facebook_id, timestamp)

Discussion herehere