MariaDB, PBXT и таинственные результаты запросов - PullRequest
2 голосов
/ 02 ноября 2010

Прежде всего, вот таблица:

CREATE TABLE `outlet_tags` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `importer_id` int(11) NOT NULL,
  `outlet_id` int(11) NOT NULL,
  `code` varchar(20) NOT NULL,
  `postcode` varchar(15) DEFAULT NULL,
  `tag_set` varchar(45) DEFAULT NULL,
  `tag_type` varchar(45) DEFAULT NULL,
  `tag_details` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_report_outlet_tags_1` (`importer_id`),
  KEY `fk_report_outlet_tags_2` (`outlet_id`),
  KEY `outlet_tag_set` (`tag_set`),
  KEY `outlet_tag_type` (`tag_type`),
  KEY `outlet_tag_details` (`tag_details`),
  CONSTRAINT `fk_report_outlet_tags_1` FOREIGN KEY (`importer_id`) REFERENCES `importers` (`id`),
  CONSTRAINT `fk_report_outlet_tags_2` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`)
) ENGINE=PBXT DEFAULT CHARSET=utf8;

Может кто-нибудь пролить свет на то, почему значения полей меняются в зависимости от условий, используемых в следующих запросах?Это не произойдет, если двигатель Мария.

select * from outlet_tags where code=1503 and outlet_id=407 limit 3;
+------+-------------+-----------+------+----------+---------+-----------------+----------------+
| id   | importer_id | outlet_id | code | postcode | tag_set | tag_type        | tag_details    |
+------+-------------+-----------+------+----------+---------+-----------------+----------------+
|  222 |           1 |       407 | 1503 | XXX XXX  | outlet  | Make up         | Make up        |
|  675 |           1 |       407 | 1503 | XXX XXX  | outlet  | Approved Status | Approved       |
| 1619 |           1 |       407 | 1503 | XXX XXX  | outlet  | Retail Area     | No Retail Area |
+------+-------------+-----------+------+----------+---------+-----------------+----------------+
3 rows in set (0.00 sec)

select * from outlet_tags where code=1503 and importer_id=1 limit 3;
+------+-------------+-----------+------+----------+---------+-----------------+----------------+
| id   | importer_id | outlet_id | code | postcode | tag_set | tag_type        | tag_details    |
+------+-------------+-----------+------+----------+---------+-----------------+----------------+
|  222 |           1 |       407 | 1503 | XXX XXX  | outlet  | Make up         | Make up        |
|  675 |           1 |       407 | 1503 | XXX XXX  | outlet  | Approved Status | Approved       |
| 1619 |           1 |       407 | 1503 | XXX XXX  | outlet  | Retail Area     | No Retail Area |
+------+-------------+-----------+------+----------+---------+-----------------+----------------+
3 rows in set (0.00 sec)

select * from outlet_tags where importer_id=1 and outlet_id=407 limit 3;
+------+-------------+-----------+------+----------+---------+----------+-------------+
| id   | importer_id | outlet_id | code | postcode | tag_set | tag_type | tag_details |
+------+-------------+-----------+------+----------+---------+----------+-------------+
|  222 |           1 |       407 | 1503 | NULL     | NULL    | NULL     | NULL        |
|  675 |           1 |       407 | 1503 | NULL     | NULL    | NULL     | NULL        |
| 1619 |           1 |       407 | 1503 | NULL     | NULL    | NULL     | NULL        |
+------+-------------+-----------+------+----------+---------+----------+-------------+
3 rows in set (0.00 sec)

Обновление : по состоянию на MariaDB 5.5 PBXT был отброшен как механизм хранения

1 Ответ

1 голос
/ 26 сентября 2011

Попробуйте использовать ORDER BY с запросами.

Различные движки могут возвращать строки в различном порядке в зависимости от способа получения строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...