首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引btree不工作

索引btree不工作
EN

Stack Overflow用户
提问于 2013-12-10 00:15:30
回答 1查看 46关注 0票数 2

我有一个表OrderDish,它包含:

代码语言:javascript
复制
create table OrderDish(
    email VARCHAR(80),
    nOrd integer,
    totalPrice integer,
    sale integer,
    nameR VARCHAR(80),
    dayO integer,
    monthO VARCHAR(45),
    yearO integer,
    constraint c5 primary key (email, nOrd),
    foreign key (email) references Client(email),
    foreign key (nameR) references Restaurant(nameR),
    foreign key (dayO, monthO, yearO) references Data(dayO, monthO, yearO));

我有一个非常常见的问题,要求按餐厅和年份销售totalPrice

代码语言:javascript
复制
select O.nameR, O.yearO, sum(O.totalPrice) as mytotal
from OrderDish O
group by O.nameR, O.yearO;

研究结果如下:

代码语言:javascript
复制
+------------------------------+------+------------+
| nameR                        | yeaO | mytotal |
+------------------------------+------+------------+
| El Gordo                     | 2013 |       5699 |
| El Gordo                     | 2014 |       2793 |
| El Gordo                     | 2015 |      11457 |
| Eleven                       | 2013 |       7599 |
| Eleven                       | 2014 |       3724 |
........

我想创建一些索引来加速这个非常常见的查询。我已经做了这么多了

代码语言:javascript
复制
create INDEX tot_per_rest_per_year 
    ON OrderDish(nameR) using btree;

但这并没有加速--消耗的时间是一样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-10 00:40:35

我想下面的指数可以帮你。

代码语言:javascript
复制
ALTER TABLE OrderDish ADD INDEX(nameR, yearO, totalPrice);

您正在进行完全扫描,即使有INDEX(nameR)

请参阅http://dev.mysql.com/doc/refman/5.5/en/group-by-optimization.html

假设表t1(c1、c2、c3、c4)上有索引idx(c1、c2、c3)。松散索引扫描访问方法可用于以下查询: 选择c1,c2从t1组中选择c1,c2;从t1中选择c1,c2;从c1组中选择c1,MIN( c2 );从t1中选择c1,c2,c1 < const组BY c1,c2;从,MIN(),,从选择> const组,其中,;从选择,其中< const组按,;从,从#en35,#en36选择= const组。

和,

“我只知道mysql中的btree”

MySQL只支持B树索引(仅支持散列索引的内存表除外).

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20483576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档