Php MySQL-如何永久存储缓存?

Php MySQL-如何永久存储缓存?,php,mysql,performance,query-optimization,myisam,Php,Mysql,Performance,Query Optimization,Myisam,我有一个百万行的表,其中有很多特定的查询,这会减慢速度。每个查询必须在用户每次单击时执行 目前,我正在将密集查询的结果存储到$\会话中。只是因为MySQL缓存在几个不同的查询之后被删除了 是否有可能以某种方式永久性地存储比$\u SESSION更好的重复查询?即使在用户1执行查询之后,用户2甚至在几天后执行相同的重复查询 这张桌子几乎没有新的记录..比如。。曾经所以它基本上是一个99.99%的阅读,而不是写作的表格 SHOW CREATE TABLE CREATE TABLE `campaign

我有一个百万行的表,其中有很多特定的查询,这会减慢速度。每个查询必须在用户每次单击时执行

目前,我正在将密集查询的结果存储到$\会话中。只是因为MySQL缓存在几个不同的查询之后被删除了

是否有可能以某种方式永久性地存储比$\u SESSION更好的重复查询?即使在用户1执行查询之后,用户2甚至在几天后执行相同的重复查询

这张桌子几乎没有新的记录..比如。。曾经所以它基本上是一个99.99%的阅读,而不是写作的表格

SHOW CREATE TABLE
CREATE TABLE `campaign__companies` (
`id` int(21) NOT NULL AUTO_INCREMENT,
`business_id` varchar(25) NOT NULL DEFAULT '',
`name` varchar(255) NOT NULL DEFAULT '',
`form_id` int(5) NOT NULL DEFAULT '-1',
`spec_ids` int(6) DEFAULT '0',
`spec_path` varchar(100) NOT NULL DEFAULT '0',
`country_id` int(5) NOT NULL,
`region_id` int(5) DEFAULT NULL,
`city_id` int(5) DEFAULT NULL,
`code_id` int(5) DEFAULT NULL,
`profile_url` varchar(255) NOT NULL DEFAULT '',
`has_email` varchar(100) DEFAULT NULL,
`email_price` float NOT NULL DEFAULT '0',
`has_phone` varchar(255) DEFAULT NULL,
`phone_price` float NOT NULL DEFAULT '0',
`is_active` int(2) NOT NULL DEFAULT '0',
`active` int(1) NOT NULL DEFAULT '1',
`failed_request` int(2) NOT NULL DEFAULT '0',
`failed_captcha` int(2) NOT NULL DEFAULT '0',
`date_added` int(21) NOT NULL DEFAULT '0',
`date_registered` int(21) NOT NULL DEFAULT '0',
`date_checked_pre` int(21) NOT NULL DEFAULT '0',
`date_checked_captcha` int(21) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`),
 KEY `country_id` (`country_id`),
 KEY `has_email` (`has_email`),
 KEY `has_phone` (`has_phone`),
 KEY `spec_ids` (`spec_ids`),
 KEY `country_region` (`country_id`,`region_id`),
 KEY `country_region_city` (`country_id`,`region_id`,`city_id`),
 KEY `country_region_city_code`
 (`country_id`,`region_id`,`city_id`,`code_id`),
 KEY `spec_path` (`spec_path`)
 ) ENGINE=InnoDB AUTO_INCREMENT=950047 DEFAULT CHARSET=utf8

如果增加查询缓存的大小是不可能的,您可能需要考虑类似或类似的选项(ReDIS.!)。这使您可以将值写入缓存服务器并极其快速地检索它们。当您使用PHP时,您会发现它有一个非常简单的API:只需将它指向memcache服务器(如果需要,它可能与MySQL服务器是同一台机器),然后读取和写入键/值


注意:memcache也不是永久性的,但从长远来看,它肯定是好的。

文件缓存?Memcache?前一个人已经给Memcache打了一个铃铛。你能解释一下文件缓存吗?还是一个PHP的东西?因为,这不是一个坏主意,但我希望使用MySQL能够做得更少…文件缓存ofc很好,但这是我最后的选择,让我们看看是否可以加快查询速度。提供
SHOW CREATE TABLE
EXPLAIN SELECT…
。幸运的是,这将是一个简单的修复,而且比构建缓存层容易得多。我更新了问题。。。但这种解释并不合适。。。。我应该给你一些更具体的信息吗?根据查询,我更喜欢使用memcached或redis来存储结果。但是,您可以调整mysql查询缓存以存储更多内容。查询缓存变量见mysql文档。尽管如此,memcached是最流行的方式,甚至facebook也将其与mysql结合使用来存储数十亿数据。