当我们编写SQL查询时,我们会添加额外的空格进行缩进,以使其更易读。这些空格可能会迅速累积。我想知道这些额外的空格是否会显著影响网络延迟和/或数据库中的查询解析时间。
1. 从客户端/ORM发送到数据库服务器的查询字符串是否也包括这些空格,还是由客户端/ORM剥离/规范化?
2. 查询字符串中有很多空格是否会显著影响性能,因此应该在合理范围内尽量减少?
为了说明这一点,以下查询总共包含577个字符:
注意:我并不赞同编写类似第二个查询的语句。我只是想知道时间上是否存在实质性差异。
1. 从客户端/ORM发送到数据库服务器的查询字符串是否也包括这些空格,还是由客户端/ORM剥离/规范化?
2. 查询字符串中有很多空格是否会显著影响性能,因此应该在合理范围内尽量减少?
为了说明这一点,以下查询总共包含577个字符:
select * from (
select
u.id as userId,
u.name as userName,
sum(case when date(u.login_at) <= date('2020-12-31') then 1 else 0 end) as loginCount,
max(case when date(u.login_at) <= date('2020-12-31') then u.login_at else null end) as lastLogin,
from user u
join user_login ul on u.id = ul.user_id
where u.id = '12345'
group by u.name, u.id
) x
where loginCount > 0;
相比之下,去除不必要的空格后的相同查询仅包含329个字符,查询大小减少了43%。
select * from(select u.id userId,u.name userName,sum(case when date(u.login_at)<=date('2020-12-31')then 1 else 0 end)loginCount,max(case when date(u.login_at)<=date('2020-12-31')then u.login_at else null end)lastLogin,from user u join user_login ul on u.id=ul.user_id where u.id='12345' group by u.name,u.id)x where loginCount>0;
注意:我并不赞同编写类似第二个查询的语句。我只是想知道时间上是否存在实质性差异。