1、笛卡尔积
内存消耗大原理上是先把两张表相乘,再从相乘的结果中筛选出来的数据。
2、连街查询
内存消耗相对于多表查询要低一些,每一条数据在查询中需要判断。

说的通俗一些,比如笛卡尔积和连接查询两个人去买显卡,没错他俩都是做显卡生意的。笛卡尔积就是先买上一批存到自己的仓库里面去。而后在一个个检查是否合格,然后倒卖。而连接查询则是去买显卡的时候先检测显卡是不是好的,如果是好的他就收货倒卖否则不收货,他没有自己的仓库,当然人家也不需要仓库。

理论上来说两者的效率不会有太大的区别,因为两个人都要一个一个的去匹配显卡。只是连接查询不需要那个仓库而已。其实在数据量非常庞大的时候两者都不是最佳的方案。因为可以想象一下,假如你进了100万个显卡。每个需要100道程序才能测试出合格与否。那这数据量就高到了一个亿。所以

当使用多表查询的时候,如果数据量不算大,那么使用连接查询效率相对较高。但是如果数据量非常庞大,那么使用子查询(如果无法使用,即使分成几个单表查询)查询效率会更高一些。
一般情况下
查询语句where条件后如果有多个条件,条件的顺序应该是?
先把能够筛选大量数据的条件放前面,其他条件放后面

而后再来介绍一下Limit
它有两个参数,srtart和length意思分别是从哪一条数据开始,查询多少条数据出来。

使用场景较多的情况是分页查询
Select * from 表 limit 0,10
Select * from 表 limit ((页码-1)*10),10
但是mysql这里有一个问题比如从第9000万条数据往后面找十条数据,那么mysql就必须数到第9000万条再往后数十个。

针对这个问题
可以加一个字段num是连续的,最大的缺点就是要求num是连续的。这里其实就相当于学集合的时候,链表和数组的效率,数组可以直接找到指定个数的数据,而链表呢必须从第一个开始数,数到指定的数据处。
Select * from 表 where num >=((页码-1)*10) limit 10;
(oracle数据库分页查询的时候就使用了子查询,没使用limit)

在写查询的时候最好不要用 *
而是写清楚要查询的有哪些字段

技术
©2019-2020 Toolsou All rights reserved,
Unity-Demo实例之 ✨ 实现UI-背包装备拖拽功能计算机网络---计算机网络基本概念(协议、体系)某东14薪变16薪,是诚意还是套路?让人意想不到的Python之樱花树(turtle库的华丽样式)java四大函数式接口(重点,简单)06【若依框架解读】数据范围过滤--太牛了Unity3D之UGUI基础--画布的三种模式os模块的简单使用html写樱花树,写樱花树的作文