一、前言 前几天在J哥的Python群【Z】问了一个Pandas数据处理的问题,一起来看看吧。 各位群友,打扰了。能否咨询个pandas的处理问题?...左边一列id代表个体/记录,右边是这些个体/记录属性的布尔值。我想做个处理,返回每个个体/记录中属性为1的列标签集合。...例如:AUS就是[DEV_f1,URB_f0,LIT_f1,IND_f1,STB_f0],不知您有什么好的办法? 并且附上了数据文件,下图是他的数据内容。...二、实现过程 这里【Jin】大佬给了一个答案,使用迭代的方法进行,如下图所示: 如此顺利地解决了粉丝的问题。...后来他粉丝自己的朋友也提供了一个更好的方法,如下所示: 方法还是很多的,不过还得是apply最为Pythonic! 三、总结 大家好,我是皮皮。
背景 最近,后台运维要求导出的 Excel文件,对于时间的筛选,能满足年份、月份的选择 通过了解,发现: 先前导出的文件,默认列数据都是字符串(文本)格式 同时,因为用的是 Laravel-excel...控件版本的问题,要实现的方式也不同 在此,根据版本不同,进行步骤整理,以便能帮助到有需要的小伙伴 … 所要达成的目标 框架 Laravel 版本: Laravel5.8 Excel...- Column formatting 参考文章:laravel-excel导出的时候写入的日期格式数据怎么在excel中正确显示成可以筛选的日期格式数据 提示 1..../** * @notes:获取导出的数据 * @return array 注意返回的数据为 Collection 集合形式 * @author: zhanghj...导出的时候写入的日期格式数据怎么在excel中正确显示成可以筛选的日期格式数据 Laravel Excel 3.1 导出表格详解(自定义sheet,合并单元格,设置样式,格式化列数据)
经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...这可以是单个记录或多个记录。 第二个参数是唯一标识记录的列。除 SQL Server 外的所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新的列作为第三个参数(可选)。...[ 'username' => 'bar' , 'created_at' => now (), 'updated_at' => now ()], ]); SQL Server 需要带有唯一标识记录的列的第二个参数...,upsert()并且insertIgnore()会自动为插入的值添加时间戳。...upsert()还将添加updated_at到更新的列中。
如果子查询不依赖外层查询的值,那么该子查询为不相关子查询,否则为相关子查询。...执行计划的第三条记录的id值为2,说明该条记录对应的是一个单表查询,从它的select_type值为MATERIALIZED可以看出,查询优化器是要把子查询先转换成物化表。...然后看执行计划的前两条记录的id值都为1,说明这两条记录对应的表进行连接查询,需要注意的是第二条记录的table列的值是,说明该表其实就是id为2对应的子查询执行之后产生的物化表,...子查询,而且子查询可以使用到主键进行等值匹配的话,那么该子查询执行计划的type列的值就是unique_subquery index_subquery : index_subquery与unique_subquery...类似,只不过访问子查询中的表时使用的是普通的索引 这里针对的是子查询返回的列是唯一索引还是普通索引 range : 如果使用索引获取某些范围区间的记录,那么就可能使用到range访问方法 index
执行计划输出中各列详解 table 不论我们的查询语句有多复杂,里边儿包含了多少个表,到最后也是需要对每个表进行单表访问的,所以设计MySQL的大叔规定EXPLAIN语句输出的每条记录都对应着某个单表的访问方法...s1表的单表查询,所以EXPLAIN输出中只有一条记录,其中的table列的值是s1,表明这条记录是用来说明对s1表的单表访问方法的。...,s1表在外层查询中,外层查询有一个独立的SELECT关键字,所以第一条记录的id值就是1,s2表在子查询中,子查询有一个独立的SELECT关键字,所以第二条记录的id值就是2。...,但是执行计划中s1和s2表对应的记录的id值全部是1,这就表明了查询优化器将子查询转换为了连接查询。...为毛id值是NULL,而且table列长的也怪怪的?大家别忘了UNION子句是干嘛用的,它会把多个查询的结果集合并起来并对结果集中的记录进行去重,怎么去重呢?MySQL使用的是内部的临时表。
比如下面这样使用: $event = Event::find(12); $event->delete(); 首先使用primary key查询出需要的条目,返回一个Event对象实例,然后调用 delete...软删除 在许多情况下,你不会真正想要从数据库中删除记录,而是用一种不再在应用程序中显示它们的方式对其进行注释。这就是所谓的软删除。...其实原理很简单,就是为模型追加一个全局作用域,为每个查询子句追加上如下筛选条件: WHERE deleted_at IS NULL laravel已经为我们写好这部分逻辑了,在模型内引入如下trait:...,deleted_at列将被设置为当前时间。...任何设置deleted_at为日期时间值的记录,都不会包含在任何查询结果中,因此看起来已经被删除了。
有时候,我们想要获取的并不是一行或几行记录,而是某个字段的值,你当然你可以查询到一行记录后从结果对象中获取指定字段的值,但是 Laravel 为我们提供了更便捷的语法: $name = '学院君'; $...你一定有过这样的经历,从数据库获取指定查询结果后,以主键 ID 值为键,以某个字段值为值构建关联数组,以前,你可能不得不遍历查询结果构建数组才能解决这样的问题,在 Laravel 中,我们只需在查询构建器上调用...null查询 NULL 查询就是判断某个字段是否为空的查询,Laravel 查询构建器为我们提供了 whereNull 方法用于实现该查询: DB::table('users')->whereNull(...,普通的 WHERE 查询也可以使用子查询,对应的方法是 whereSub,但是子查询的效率不如连接查询高,所以我们下面来探讨连接查询在查询构建器中的使用。...当某行在另一表中没有匹配行,则另一表中的列返回空值,如 select * from posts p full join users u on p.user_id = u.id 交叉连接:也称笛卡尔积,不带
如果 LOCK_TYPE是RECORD,是锁定的记录的主键值,否则NULL。 此列包含锁定行中主键列的值,格式为有效的SQL字符串。如果没有主键,LOCK_DATA则是唯一的InnoDB内部行ID号。...filtered 某个表经过搜索条件过滤后剩余记录条数的百分比 Extra 额外提示信息 执行计划各列详细信息 id 查询语句中每出现一个SELECT关键字,MySQL就会为它分配一个唯一的id值。...在连接查询中,每个表都会对应一条记录,这些记录的id列的值是相同的,出现在前边的表表示驱动表,出现在后边的表表示被驱动表。...语句输出的每条记录都对应着某个单表的访问方法,该条记录的table列代表着该表的表名。...,而且子查询可以使用到主键进行等值匹配的话,那么该子查询执行计划的type列的值就是unique_subquery。
,里边儿包含了多少个表,到最后也是需要对每个表进行单表访问的,所以规定EXPLAIN语句输出的每条记录都对应着某个单表的访问方法,该条记录的table列代表着该表的表名 2.2 id 每一个被查询优化后的查询对应一个...列的值是1,这意味着查询优化器在经过分析使用idx_key1进行查询的成本之后,觉得满足key1 > ‘z’这个条件的记录只有1条。...列中可以看出来,该查询使用idx_key1索引来执行查询,从rows列可以看出满足key1 >’blue’的记录有9827条。...对于单表查询来说,这个filtered列的值没什么意义,我们更关注在连接查询中驱动表对应的执行计划记录的filtered值,比方说下边这个查询: > EXPLAIN SELECT * FROM s1 INNER...:当我们的LIMIT子句的参数为0时,表示压根儿不打算从表中读出任何记录,将会提示该额外信息 Using filesort:有一些情况下对结果集中的记录进行排序是可以使用到索引的 Using temporary
驱动表中的每条记录通过被驱动表的索引进行访问,因为索引查询的成本是比较固定的,故 MySQL 优化器都倾向于使用记录数少的表作为驱动表(外表)。...注意: 这里缓存的不只是关联表的列,sql中select 后面要查询的列也会缓存起来。 在一个有 N 个 join 关联的 SQL 中会分配 N-1 个 join buffer。...所以查询的时候尽量减少不必要的字段,可以 让 join buffer 中存放更多的列。 其原理如下图。 其开销统计如下。...join buffer size 的最大值在 32 位系统可以申请 4G,而在 64 位操做系统下可以申请大于 4G 的 join_buffer空间(64 位 Windows 除外,其大值会被截断为 4GB...(减少查询的趟数) 不建议使用子查询,建议将子查询 SQL 拆开结合程序多次查询,或使用 JOIN 来代替子查询。
,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。...今天我们学习如下五个聚合函数: l count:统计指定列不为NULL的记录行数; l sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; l max:计算指定列的最大值,如果指定列是字符串类型...,那么使用字符串排序运算; l min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; l avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0; #1 查询商品的总条数...第3章 SQL约束 3.1 主键约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。...NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) ) 3.4 唯一约束 UNIQUE 约束唯一标识数据库表中的每条记录
: +---------+ | Email | +---------+ | a@b.com | +---------+ 用于查找列中重复值的 SQL 查询 在 SQL 查询中解决这个问题的三种方法,...第一种是使用 group by 子句,第二种是使用 self-join,第三种是使用带有 exists 子句的子查询。...这是查找重复电子邮件的 SQL 查询: SELECT Email FROM Person GROUP BY Email HAVING COUNT(Email) > 1 使用self-join在列中查找重复值...= b.Id 使用带有 EXISTS 的子查询查找重复的电子邮件: 您甚至可以使用相关子查询来解决这个问题。 在相关子查询中,对外部查询中的每条记录执行内部查询。...= p1.Id ) 总结 这就是如何使用 GROUP BY 和 HAVING 子句在 SQL 中查找重复项的全部内容。 我还向您展示了如何使用自联接和带有 EXISTS 子句的子查询来解决这个问题。
运行 Select 查询 你可以使用 DB Facade 的 select 方法来运行基础的查询语句我们在上面创建的路由里增加个 index 的路由 dump 是 laravel 的打印函数可以把它理解为...传递给 select 方法的第一个参数就是一个原生的 SQL 查询,而第二个参数则是需要绑定到查询中的参数值。通常,这些值用于约束 where 语句。参数绑定用于防止 SQL 注入。...select * from test where testId = :id', ['id' => 1]); dump($binding); } 查询构造器 Laravel 的数据库查询构造器为创建和运行数据库查询提供了一个方便的接口...如果你甚至不需要整行数据,可以使用 value 方法从记录中获取单个值 function getRow() { $data = DB::table('test')->where...获取一列的值 当然业务中有时候需要获取 某个字段 哪一列的值的集合,这个时候就用到了 pluck 方法,pluck 接受 2 个参数 第一个参数是我们要取的字段; 第二个字段是可以选的用来做 key
例如:一个执行计划会描述一种数据访问路径-》访问在t表上的索引idx1,定位到关键字为‘k’的那行记录, 最后返回a列和b列这两列数据。...里查询就会显示ASYNC_NETWORK_IO类型的等待 有趣的是,OUTPUT参数的返回,OUTPUT参数的值会被插入到返回给客户端的结果集的网络数据流中。...当请求完成的时候,OUTPUT参数值只能在查询执行的最后写到结果集中,这就是为什麽OUTPUT参数值 只有当所有的结果集都返回了才能检查OUTPUT参数的 查询执行过程中要赋予的内存(Query Execution...为了阻止这种情况的发生,SQLSERVER使用一种叫“资源信号量”的东西。这个东西能够确保正在执行的查询的总内存分配不会超过 当前计算机中的内存总和。...您可以查询sys.dm_exec_query_memory_grants这个DMV视图来获取当前的内存分配(请求的内存,分配了的内存) 当一个查询必须要等待内存的赋予/分配,在SQL PROFILER里可以看到
= 等负向条件查询在有 NULL 值的情况下返回永远为空结果,查询容易出错 2、下面这条语句的意思,把TableA的记录逐条代入到子查询,如果子查询结果集为空,说明不存在,那么这条TableA的记录出现在最终结果集...tblName”是一个很不错的SQL语句写法,它通常用于子查询。...这样可以减少系统开销,提高运行效率,因为这样子写的SQL语句,数据库引擎就不会去检索数据表里一条条具体的记录和每条记录里一个个具体的字段值并将它们放到内存里,而是根据查询到有多少行存在就输出多少个“1”...) 的返回值为 expr1; 否则其返回值为expr2 10、Mysql中的sum(if())的用法 11、mysql在整数减去null得到是null。...注意: 1) 在设计表的时候,如果发现这列是需要运算的列,建议设置默认值,比如0; 2) 在整形列的运算的时候,不管是加,减,乘,除等。都需要使用ifnull,对列进行处理。否则报表数据就会错。
VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE);在这个示例中,id 列是一个自增的主键,确保每条记录都有唯一的标识符。...例如,查询 users 表中的所有记录:SELECT * FROM users;也可以只查询特定列:SELECT username, email FROM users;还可以使用 WHERE 子句添加查询条件...INT REFERENCES users(id));通过外键约束,可以保证 orders 表中的 user_id 列的值必须存在于 users 表的 id 列中,从而维护了数据的关联性和一致性。...BY order_amount DESC;九、子查询子查询是嵌套在其他查询中的查询语句。...= orders.user_id;左连接会返回左表中的所有记录以及与右表匹配的记录,如果右表中没有匹配的记录,则对应的列值为 NULL。
经过仔细检查,发现几个严重问题: 查出某表「全部结果」,再「遍历」结果集,查询每条记录「多个字段」的关联模型 未执行 php artisan optimize 未关闭 debug 模式 未调整 log_level...框架内使用类似如上的方式查询,假设作者的文章数为 n,每篇文章关联的模型有 2 个(likes & comments),则执行此控制器,对于数据库的时间复杂度为:O(n*2+1),需要执行如此大量的...这在后端设计中应该是需要完全避免的,理想情况的时间复杂度应该是 O(n),n 为常量,不受数据规模的影响。...于是修改代码,过程不再详叙,参见 Laravel 官方文档,或: Laravel 学习笔记之模型关联预加载 经过修改,在 Chrome 开发者工具内查看请求 Timing,缩短为原来时间的一半,800ms...(但此值仍然不够理想,受到视图渲染、操作系统等原因的影响,后期继续优化,不属于本文讨论范围。)
但分区 (partitioning)是最普遍的。 定义 每条数据(或每条记录,每行或每个文档)属于且仅属于某特定分区。每个分区都能视为一个完整小型数据库,虽然数据库可能存在跨分区操作。...这时的高负载分区即是系统热点。 2.1 避免热点 最简单的,将记录随机分配给所有节点。这能在所有节点比较均匀分布数据,但缺点是:试图读取特定数据时,不知道保存在哪个节点,必须并行查询所有节点。...Bigtable及其开源版本HBase和2.4版本之前的MongoDB都采用该分区策略。 每个分区中,可按K排序保存。范围扫描就很简单,将K作为联合索引来处理,从而在一次查询中获取多个相关记录。...但通过hash分区,失去高效的执行范围查询的能力:即使相邻的K,经过hash后也会分散在不同分区。MongoDB中,若使用hash分区,则范围查询都必须发送到所有分区。...尽管不支持复合主键的第一列的范围查询,但若第一列已指定固定值,则可对其他列执行高效的范围查询。 联合索引为一对多关系提供一个优雅的数据模型。如社交网站,一个用户可能发布很多消息更新。
可分为基本域和组合域: 基本域:不可再分,通常为定长。 组合域:可以再分成子域,通常为变长。(如工资属性可以细分为基本工资、绩效工资等) 记录(Record):是一组相关域的集合。...缺点: 对记录的查询仍然是穷举查询 插入一条记录时并不方便,需要移动后续的所有记录位置 为了解决数据插入的繁琐,引入了一个特殊的域:关键域(key field)/ 主域 通常是每条记录的第一个域 可以唯一地标识该记录...,把日志文件合并到主文件中,并按正确的关键字顺序产生一个新文件 索引顺序文件(Indexed Sequential File) 索引提供了一个查询功能,以快速到达所需记录的附近区域 索引文件中的每条记录由两个域组成...index):包含主文件中每条记录的索引项 查询速度快,但是由于包含记录的全部索引项,因此会多占用一部分内存空间 为了易于查找,索引自身被组织成一个顺序文件 部分索引(partial index...直接文件或散列/哈希文件(Direct or Hashed File) 可以直接访问磁盘中任何一个地址已知的块 每条记录中都需要一个关键域 这里对关键域进行Hash操作,较索引文件节约空间,但是存在哈希冲突
领取专属 10元无门槛券
手把手带您无忧上云