结构化查询语言(SQL)是用于查询关系数据库的语言。典型的关系数据库由表组成,其中每个表都有行和列。每列都有特定类型的数据。因素取决于SQL查询的复杂性。
例子 –
select *
from employee
where id = 77
查询可以通过三种不同的方式找到结果–
- O(1) -ID上的哈希索引,或者来自先前查询的ID = 77上的缓存结果。
- O(n) –进行全面扫描,查看每一行,但未找到任何结果。
- O(log(n)) –对ID进行排序并进行二进制搜索。
查询的复杂性完全取决于SQL引擎将如何处理查询。如果我们的雇员表中有1000亿行数据,而我们需要找出雇员ID为77的行。如果我们扫描整个表,则将花费很长时间。如果我们对表进行排序并在该表上进行二进制搜索,则大约需要进行36次查找(100000000000的日志基数2为〜36)才能找到我们的值。但是对表进行排序将需要一段时间。它完全取决于sql引擎的优化程序。
如果您想了解有关SQL引擎查询处理的更多信息,我建议您这样做。
编写良好的查询时要记住的事情:
- 限制您的结果–
当您无法避免过滤选择语句时,可以考虑限制结果。您可以通过使用限制来限制结果,顶部例子 –
select TOP 3 from employee
select * from employee limit 10
- 不要使查询变得更复杂。尝试使它们简单有效。
例子 –
考虑以下查询:select * from employee where id = 77 or id = 85 or id = 69
因此,您可以使用IN替换运算符
select * from employee where id in (77, 85, 69)
- 选择*可以避免这种情况,特别是当您至少有两次作为至少一列的联接而浪费了服务器,数据库和网络资源时。
- 了解集合体不再考虑循环。
总计-– count , avg等。