小编mit*_*sky的帖子

oracle sql组计数

SELECT a,b,count(*)
FROM t
GROUP BY rollup(a,b)
Run Code Online (Sandbox Code Playgroud)

结果:

a1, b1, 10
a1, b2, 90
a1,   , 100
Run Code Online (Sandbox Code Playgroud)

我需要:

a1, b1, 10, 100
a1, b2, 90, 100
Run Code Online (Sandbox Code Playgroud)

怎么样?

sql oracle group-by rollup count

2
推荐指数
1
解决办法
5218
查看次数

两列之间的mysql选择工作得太慢了

我有这个问题:

SELECT `country`
FROM `geoip_base`
WHERE 1840344811 BETWEEN `start` AND `stop`
Run Code Online (Sandbox Code Playgroud)

它是使用索引(使用,但解析表的大部分)并且工作太慢.我试过使用ORDER BY和LIMIT,但它没有帮助.

"start <= 1840344811 AND 1840344811 <= stop"的工作方式类似.

CREATE TABLE IF NOT EXISTS `geoip_base` (
  `start` decimal(10,0) NOT NULL,
  `stop` decimal(10,0) NOT NULL,
  `inetnum` char(33) collate utf8_bin NOT NULL,
  `country` char(2) collate utf8_bin NOT NULL,
  `city_id` int(11) NOT NULL,
  PRIMARY KEY  (`start`,`stop`),
  UNIQUE KEY `start` (`start`),
  UNIQUE KEY `stop` (`stop`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Run Code Online (Sandbox Code Playgroud)

表有57,424行.

解释查询"......按开始限制1开始和停止开始":使用键stop并获得24099行.没有顺序和限制,mysql不使用键并获取所有行.

mysql indexing select between

2
推荐指数
1
解决办法
3265
查看次数

标签 统计

between ×1

count ×1

group-by ×1

indexing ×1

mysql ×1

oracle ×1

rollup ×1

select ×1

sql ×1