Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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 SELECT查询表结构的Brighthouse优化_Mysql_Sql_Infobright - Fatal编程技术网

Mysql SELECT查询表结构的Brighthouse优化

Mysql SELECT查询表结构的Brighthouse优化,mysql,sql,infobright,Mysql,Sql,Infobright,我有一个在MySQL->中包含数百万条记录的表,使用wiki页面中的注释导入Infobright,没问题 下面是表格语法 CREATE TABLE `myTable` ( `a` varchar(255) COLLATE latin1_bin DEFAULT NULL, `b` varchar(255) COLLATE latin1_bin DEFAULT NULL, `c` bigint(20) NOT NULL, `d` bigint(20) NOT NULL, `e`

我有一个在MySQL->中包含数百万条记录的表,使用wiki页面中的注释导入Infobright,没问题

下面是表格语法

CREATE TABLE `myTable` (
  `a` varchar(255) COLLATE latin1_bin DEFAULT NULL,
  `b` varchar(255) COLLATE latin1_bin DEFAULT NULL,
  `c` bigint(20) NOT NULL,
  `d` bigint(20) NOT NULL,
  `e` int(10) NOT NULL
) ENGINE=BRIGHTHOUSE
现在,我需要运行一个select查询450次,每次使用一个不同的“a”作为约束:

SELECT d,e FROM `myTable` WHERE a = 'myString';
目标是加快调用所有查询的总时间。 但我有问题。当我运行select查询大约450次时,平均需要 每次查询0.52秒

然而,当我通过MySQL运行它时,每次查询大约需要1.7毫秒

我怎样才能优化它以击败MySQL时间? 是否需要我使用'IN'子句,而不是'='并在d,e的顶部额外选择'a'呢? 例如:


Infobright擅长处理数字数据(特别是在查询条件方面)。它们不支持传统的BTREE索引,因为它们使用“知识网格”元数据系统。当您运行
其中a='myString'
时,您将强制引擎打开每个packrow(通常每个packrow有50000行数据),并对每个记录进行字符串比较

MySQL确实支持BTREE索引,这将为您在这里提到的基于文本的查询条件提供更好的性能。假设您已经说过需要运行450次查询,那么我将假设您至少有450个“a”的唯一值

如果您有一个这样的文本列,其中包含一组非常小的唯一值(例如……某种状态指示器),那么将该列定义为查找列将大大有助于您

`a` varchar(255) COLLATE latin1_bin DEFAULT NULL COMMENT 'lookup'
注意:这种表设置为低基数列提供了最佳性能,最好为varchar()分配较小的大小,而不是255

对于这组查询,您最好还是坚持使用MySQL,或者在Infobright中重新处理数据以将这些值转换为数字数据

因为这个问题已经问了4个月了,我只是把它贴出来,作为其他偶然发现它的人的参考

`a` varchar(255) COLLATE latin1_bin DEFAULT NULL COMMENT 'lookup'