sql数据库数据量太大,分成多个表,这些表为A,B,C,而且表中的属性字段都完全相同,如何查询数据。

结论:对于子表查询,使用UNION ALL创建视图或者分区表效率较高。

1 .查看方法:使用UNION ALL连接表,例如CREATE VIEW CombinedView AS SELECT FROM A UNION ALL SELECT FROM B UNION ALL SELECT FROM C;。
2 、分区表方法:按需分区,如CREATE TABLE PartitionedTable(create_time DATE,...) PARTITION BY RANGE(create_time);。
3 、查询视图或分区表:直接使用SELECT语句,数据库会自动优化。

您选择的方法取决于您的需求、数据库功能和数据特征。

SQL数据库中如何查询包含多个日期值的字段特定日期范围的数据?

上周,一位客户问了我这个 SQL 问题,这确实让我参与其中......你说数据库设计有时真的很令人沮丧。

我考虑一下客户的需求:它有一个字段,添加了很多日期,用逗号分隔,例如“2 02 3 -01 -01 ,2 02 3 -01 -05 ”。
现在他想检查该字段中包含特定日期的记录。
这个问题在不同的数据库中的处理方式非常不同。

先说说MySQL。
你的方法已经很完美了。
使用 RECONDITION 删除中间的空格,然后使用 FIND_IN_SET 检查该空格是否在列表中。
虽然最后一个子查询分割字符串有点难看,但它完成了工作。
不过我在2 02 3 年的男人市场项目中,在上海用过类似的东西,当时数据量不大,但是也不错。
后来数据大了,对于分裂直串的搜索就犹豫了,怀疑人生了。
information_schema的虚表是什么?这部分我还没有经历过。

我觉得PostgreSQL的处理方式还是比较优雅的。
string_to_array 拆分一个直字符串,将其分成多行并展开,并将当前类型转换为范围查询。
代码要简单得多。
我了解 SQL Server 如何使用 STRING_SPLIT,但问题是版本 2 01 6 或更高版本。
否则没有此功能,必须提前与开发商确认。

归根结底,方法一或许能解决你的燃眉之急,但执行起来确实不确定……我这里偶然发现的陷阱就用过一次。
导出数据时,服务器CPU直接到1 00%。
最后我花了一晚上的时间来优化。
因此,你应该向客户澄清,这种方法只适合小数据或者临时需求。

对于长期规划,第二种方法绝对是最佳选择。
主要设计为表+日期相关表,建立索引后,搜索速度非常快。
我在北京公司的设计中推广了这个方案。
起初,客户不想改变表的结构,说改变数据会很困难。
后来,当我运行测试并比较图表时,我发现CNN的问题快了一百万倍以上,所以我同意了。
好处有很多。
您可以随意编写复杂的查询并避免字符串处理陷阱。

那你想要什么?看看是不是着急。
如果您赶时间,请使用第一种模式。
如果你不着急的话,我建议你赶紧改变计划,采用方法二。
不管怎样,我建议你多画几张示意图给他看,让观者感受到协会板为何牛逼。

sql语句统计查询结果数量怎么写?

这是正确的。
直接使用 COUNT。

SQL1 :查询多个项目。
sql SELECT 表名1 WHERE id > 5 ;
SQL2 :定量统计。
sql SELECT COUNT() FROM (SELECT FROM 表名1 WHERE id > 5 ) AS 表名2 ;
单个表中的实时统计数据。
sql SELECT tablename1 WHERE id > 5 ;
FROM COUNT(); 就是这么简单。