mysql表结构适合历史数据吗?
我知道有很多类似的话题,但我的问题更具体 目前我有两张桌子:mysql表结构适合历史数据吗?,mysql,Mysql,我知道有很多类似的话题,但我的问题更具体 目前我有两张桌子: date_hours id | datetime CREATE TABLE `date_hours` ( `id` int(10) UNSIGNED NOT NULL, `datetime` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ALTER TABLE `date_hours` ADD
date_hours
id | datetime
CREATE TABLE `date_hours` (
`id` int(10) UNSIGNED NOT NULL,
`datetime` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `date_hours`
ADD PRIMARY KEY (`id`),
ADD KEY `date_hours_datetime_index` (`datetime`);
exchange_pair_statistics
id | exchange_id | price | datehour_id
CREATE TABLE `exchange_pair_statistics` (
`id` int(10) UNSIGNED NOT NULL,
`exchange_id` int(10) UNSIGNED NOT NULL,
`exchange_pair_id` int(10) UNSIGNED NOT NULL,
`volume24h` bigint(20) UNSIGNED NOT NULL,
`price` double(14,6) NOT NULL,
`volume_percent` double(5,2) NOT NULL,
`datehour_id` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `exchange_pair_statistics`
ADD PRIMARY KEY (`id`),
ADD KEY `exchange_pair_statistics_exchange_id_index` (`exchange_id`),
ADD KEY `exchange_pair_statistics_exchange_pair_id_index` (`exchange_pair_id`),
ADD KEY `exchange_pair_statistics_datehour_id_index` (`datehour_id`);
ALTER TABLE `exchange_pair_statistics`
ADD CONSTRAINT `exchange_pair_statistics_datehour_id_foreign` FOREIGN KEY (`datehour_id`) REFERENCES `date_hours` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `exchange_pair_statistics_exchange_id_foreign` FOREIGN KEY (`exchange_id`) REFERENCES `exchanges` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `exchange_pair_statistics_exchange_pair_id_foreign` FOREIGN KEY (`exchange_pair_id`) REFERENCES `exchange_pairs` (`id`) ON DELETE CASCADE;
在exchange配对统计表中,目前有超过20000000条记录,每天都有越来越多的记录
如果我想找到某个交易所的某个日期和时间的价格,我需要首先在date_hours表中搜索,找到正确的日期和时间,并使用该Id查找exchange_pair_统计表
我有exchange_id和datehour_id的索引,但有时我需要在那个大表中进行大量搜索,所以我想知道表的结构是否是这种搜索的最佳方式
下面是以下示例查询的解释表:
select * from `exchange_pair_statistics` where `exchange_pair_id` = 6985 and `exchange_id` = 42 order by `id` desc limit 1
1 | SIMPLE | exchange_pair_statistics | range | exchange_pair_statistics_exchange_id_index,exchang... | exchange_pair_statistics_exchange_pair_id_index | 4 | NULL | 212786 | Using index condition; Using where
我认为这些数据(20000 000)对于正常的表格来说是不好的。。。
类似Oracle的大数据现在正在MySQL中集成。因此,在mysql中存储大数据的最佳方法是:
MySql通过MySql和Hadoop开启了新的大数据洞察
MySQL文档存储=(MySQL+NoSql)
X开发API将有助于通过X协议通过SQL和CRUD操作生成JSON。还可以维护X会话
这将是最好的透明数据砂光和聊天应用程序或组应用程序共享
尽管如此,FaceBook仍在使用这项技术,因为它速度非常快。我认为您可以存储记录数据。请将您的问题包括您的表结构,包括索引,请参阅。另外,在
SELECT
语句中包含EXPLAIN-SELECT
语句,以查看查询是如何执行的。我已经添加了表结构作为EXPLAIN表