mysql - 使用 Aurora-MySQL 进行查询的问题适用于 MySQL
问题描述
我们有一个简单的查询来检查一个记录是否存在于一个具有另一个 id 的表中。如果是这样,它会返回 id。这适用于小型数据集,例如下面 Aurora 中的工作示例。
但是,如果我们有很多 id(比如 1000),第一个查询返回 0 行,第二个在 Aurora 中成功,但在 MySQL 上有效。
我们无法在 Aurora MySQL 中看到任何可以解释此行为的优化或其他漏洞。任何建议或指导表示赞赏。
工作示例:
CREATE TABLE `test_table_1` (
`id` char(36) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `test_table_2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`test_table_1_id` char(36) COLLATE utf8mb4_unicode_ci NOT NULL,
`another_id` char(36) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `test_table_1_id_foreign` (`test_table_1_id`),
KEY `another_id_index` (`another_id`),
CONSTRAINT `test_table_1_id_foreign` FOREIGN KEY (`test_table_1_id`) REFERENCES `test_table_1` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `test_table_1` (`id`)
VALUES
('e54b3097-21ff-4d7d-8bee-5aa62e66d9b6'),
('4fada427-ef5a-455d-ad55-831de6192dc1');
INSERT INTO `test_table_2` (`test_table_1_id`, `another_id`)
VALUES
('e54b3097-21ff-4d7d-8bee-5aa62e66d9b6', 'aeef668e-1365-41e8-a4a7-026d9a021935'),
('4fada427-ef5a-455d-ad55-831de6192dc1', '61e7b307-e356-4537-bcc5-927c3c217992');
SELECT * FROM `test_table_1`
WHERE `id` = 'e54b3097-21ff-4d7d-8bee-5aa62e66d9b6'
AND EXISTS (
SELECT * FROM `test_table_2`
WHERE `test_table_2`.`another_id` = 'aeef668e-1365-41e8-a4a7-026d9a021935'
AND `test_table_2`.`test_table_1_id` = `test_table_1`.`id`);
SELECT * FROM `test_table_1`
WHERE `id` = '4fada427-ef5a-455d-ad55-831de6192dc1'
AND EXISTS (
SELECT * FROM `test_table_2`
WHERE `test_table_2`.`another_id` = '61e7b307-e356-4537-bcc5-927c3c217992'
AND `test_table_2`.`test_table_1_id` = `test_table_1`.`id`);
解决方案
推荐阅读
- android - Google 如何识别 Android 项目/开发者
- php - 使用while循环php将数据插入数组
- python - 带有 wolfram alpha api 的 Discord 机器人无法正常工作
- android - 任务 ':launcher:bundleReleaseResources' 执行失败
- c# - 如何确保仅在返回 api 结果时才继续执行网页?
- python - 从递归函数返回值的错误
- android - 开发客户端:找不到原生 iOS 和 Android 项目的通用 URI 方案
- audio - 如何解码原始 f32 音频样本,以便提取特定频率的音量?
- excel - 如何使用 Excel VBA 中的图标(形状)在月份之间导航?
- amazon-web-services - AWS ECS 不支持在 docker compose 中部署标签