Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在大型数据库中优化SQL查询?_Mysql_Database_Query Optimization - Fatal编程技术网

Mysql 在大型数据库中优化SQL查询?

Mysql 在大型数据库中优化SQL查询?,mysql,database,query-optimization,Mysql,Database,Query Optimization,质疑 MySQL返回: Showing rows 0 - 29 ( 50 total, Query took 11.9276 sec) [id: 3452538 - 3448824] 如果我删除 按id描述订购 解释计划: 计数 使用的数据库示例 CREATE TABLE IF NOT EXISTS `user_ip_tmp` ( `id` int(9) NOT NULL AUTO_INCREMENT, `ip` varchar(20) NOT NULL, `dataip` bi

质疑

MySQL返回:

Showing rows 0 - 29 ( 50 total, Query took 11.9276 sec) [id: 3452538 - 3448824]
如果我删除 按id描述订购

解释计划:

计数

使用的数据库示例

CREATE TABLE IF NOT EXISTS `user_ip_tmp` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `ip` varchar(20) NOT NULL,
  `dataip` bigint(20) NOT NULL,
  `ref` text NOT NULL,
  `click` int(20) NOT NULL,
  `code` varchar(17) NOT NULL,
  `too` text NOT NULL,
  `checkopen` varchar(17) NOT NULL,
  `contry` text NOT NULL,
  `vOperation` text NOT NULL,
  `vBrowser` text NOT NULL,
  `iconOperation` text NOT NULL,
  `iconBrowser` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `ip` (`dataip`),
  KEY `ip` (`checkopen`),
  KEY `ip` (`code`),
  KEY `ip` (`too`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5426268 ;

我想用正确的方法来查询和优化数据库,以便按id排序DESC

了解数据的分布情况会很有趣。你能将以下查询的结果添加到你的帖子中吗?不需要图片,纯文本就可以了

SELECT count(*) FROM user_ip_tmp WHERE too = 'http://example.com/' AND contry != 'CN' AND contry != 'TW'; 

SELECT count(*) FROM user_ip_tmp WHERE too = 'http://example.com/'; 
另外,你能测试一下这个替代方案的性能吗?编辑:子查询的别名

SELECT sub.* FROM
(SELECT *
FROM user_ip_tmp
WHERE too = 'http://example.com/'
AND contry != 'CN'
AND contry != 'TW'
) sub
ORDER BY sub.id DESC
LIMIT 50
编辑如果它是一个添加和试验索引的选项,那么您可以尝试其中一个或两个,看看哪个更好

CREATE INDEX index_name ON `user_ip_tmp` (`too`, `id`);
CREATE INDEX index_name ON `user_ip_tmp` (`too`, `contry`, `id`);

您可以使用以下内容创建索引:

 id, too and contry

从user_ip_tmp中选择count,其中too=和contry!='CN'和contry!='TW′;42171从用户_ip_tmp中选择计数,其中太=;42879 `选择*自选择*自用户_ip_tmp,其中too=和contry!='CN'和contry!='TW'orderbyid DESC LIMIT 50无工作显示问题1248-每个派生表都必须有自己的别名Yupp,我忘了给我在from子句中使用的子查询提供别名。我编辑了我的答案并添加了它,thanksServer在用户ip tmp上创建了索引名称后停止工作,id;我想是因为有超过600万的参赛作品和参赛面积​​基数1GB@10neencom,在创建索引期间,没有定义长度的文本字段可能会杀死服务器。我会说。。。留下了200个左右的字符的太网址,然后ID。我不认为会解决问题,我认为问题在任何其他我不知道为什么当按ID下订单时会导致查询增加
SELECT sub.* FROM
(SELECT *
FROM user_ip_tmp
WHERE too = 'http://example.com/'
AND contry != 'CN'
AND contry != 'TW'
) sub
ORDER BY sub.id DESC
LIMIT 50
CREATE INDEX index_name ON `user_ip_tmp` (`too`, `id`);
CREATE INDEX index_name ON `user_ip_tmp` (`too`, `contry`, `id`);
 id, too and contry