首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Django从数据库随机取N记录的不同方法及其性能实测

[:2] 这样获取2个记录会导致性能问题,原因如下: “ 对于有着相当多数量记录的表来说,这种方法异常糟糕。这会导致一个 ORDER BY RAND() 的SQL查询。...;) 注意:只是稍微说一句,得注意到mysql一开始会试着在内存创建临时表。当内存不够了,他将会把所有东西放在硬盘上,所以你会因为近乎于整个过程的I/O瓶颈而雪上加霜。...MyModel.objects.all()[index1] MyObj2 = MyModel.objects.all()[index2] ” 如上Manganeez所说的方法,相应的获取n记录的代码应该如下...看了记录才知道 每次save都要调用一次insert和一次update。。。。下次一定用SQL语句初始化。。。。 先写了个脚本 在manage.py shell调用了下 结果让我震惊了。...[:2] 来获取随机记录序列,性能不会比 Python sample = random.sample(xrange(Record.objects.count()),n) result = [Record.objects.all

7K31
您找到你想要的搜索结果了吗?
是的
没有找到

B+Tree index structures in InnoDB(7.InnoDBB+树的索引结构)

在对innodb_ruby的快速介绍一文,我介绍了innodb_space命令行工具的安装和一些快速演示。 在InnoDB索引页的物理结构描述了InnoDB索引页的物理结构。...解析记录的内容,我们需要提供一个记录描述器,他只是要给ruby类,提供了一个返回索引描述的方法。...在对innodb_ruby的快速介绍,如果我们使用创建了100万行的更简单的表模式,树结构看起来会更有趣一些: $ innodb_space -f t.ibd -r ....对于上面示例的简单表,InnoDB的B+树索引将能够为每个叶存储468记录,或者为每个非叶子存储1203记录。...这意味着每个非叶子页能够容量的记录要小得多,从而导致整个结构的效率低下。 下一章介绍 接下来,我们将看看索引页面的页面目录结构,这已经提到了很多次,然后看看如何在InnoDB中进行高效检索。

77811

awk高级玩法

以下是传统awk 程序的配置: pattern {action} 模式匹配,则执行操作 pattern {action} 模式匹配,则打印记录 虽然,模式多半是数字或字符串表达式,不过awk 以保留字...在每一个,我们都只显示前三个输入字段,并通过省略选定模式,选定所有的记录。...语法 说明 getline 从当前输入文件,读取下记录,存入$0 ,并更新NF, NR 与FNR getline var 从当前输入文件,读取下记录,...存入var ,并更新NR 与FNR getline<file 从file 文件,读取下记录,存入$0 ,并更新NF, NR 与FNR getline var<file 从file 文件,读取下记录...,存入var ,并更新NF, NR 与FNR cmd|getline 从外部命令cmd 读取下记录,存入$0 ,并更新NF cmd|getline var 从外部命令cmd 读取下记录,存入

1.3K20

linux运维的命令梳理(三)

5 | awk '{print $1}' root root root dmtsai root awk工作流程是这样的:读入有'\n'换行符分割的一记录,然后将记录按指定的域分隔符划分域,填充域,$0...bin/bash daemon,/bin/sh bin,/bin/sh sys,/bin/sh .... blue,/bin/nosh awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一记录...接着开始读入第二记录······直到所有的记录都读完,最后执行END操作。...[-t CHAR] [-i] [--header] [-1 FIELD] [-2 FIELD] [-e STR] FILE1 FILE2 二、含义与选项 2.1、含义 存在两个已排序文件,假如文件1的某记录的某个字段值...(默认是第一个字段,从1开始计数)与文件2的某记录的某个字段值(默认是第一个字段,从1开始计数)一致,那么在最终打印结果,将这两记录拼接成一记录

7.9K81

ruby学习笔记(6)-Array的使用

ruby的数组基本使用,跟c#的数组比起来,最不习惯的区别在于允许负索引(跟javascript到有几分相似) arr=[3,4,5,6,7,8,9] puts arr[0] # 3 puts arr.first...#456,取下标从1到3的元素 print arr[-3,2] ,"\n" #倒数第三个元素开始,连续取2个元素,即7,8 复杂一点的应用如下,这里要特意指出的是,ruby的数组天生就已经实现了堆栈与队列...#来自"Ruby语言入门教程v1.0"的E8.1-3.rb arr=[4,5,6] print arr.join(", "),"\n" # 4, 5, 6 arr[4] = "m" #将第...print arr.join(", "),"\n"# 7, h, b, a, b, c, m, b arr.delete(["a","b","c"] ) #删除数组匹配["a","b","...7, h, d, m, f, 2 arr.pop #弹出一个元素,与前面的push结合起来,ruby的数组本身就是一个堆栈 print arr.join(", "),"\n" #7, h, d, m

86850

我的简书一月记:数据可视化

阅读数和赞数分布情况如下:有两篇阅读量破3K,正好分别是我的最新的和最早的两篇文章,赞数也是最高。...虽然《简书推荐作者风云榜(爬取简书app数据)》一文,我自认为写得并不怎么好,数据量仅230,并不大,但一切就是那么出人意料,也许是无意中蹭上了“简书”这一平台的热点吧。...3.赞数 再是第二重要的赞数。依旧是在20170828当天骤升。...设置圆圈大小为关注(或点赞)用户的粉丝数,效果如图,之所以要看看对应关注者的粉丝数,是因为曾看到一些用户瞬间关注了一堆账号,故推测可能自己也无形成为了简书某推荐作者。...四、小结 这大概是另类的一篇初到简书一个月的记录,用的也是我还算熟悉的数据可视化,也许以后粉丝、点赞等数据质量不错的话,还会继续用这样的方式来记录。完。

42420

乾坤大挪移:CRM WebClient UI 和 SAP Fiori UI 混搭并存

只能当玩具用:report SJSEU 执行结果:120 在SAP C4C的UI Designer里,event handler里可以写Ruby Script, UI保存时Ruby Script会自动被...C4C后台的ABAP程序转换成JavaScript,最后在浏览器里执行的是JavaScript: 关于更多Ruby script在SAP C4C的应用,请参考我的博客Ruby Script in C4C...i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。...在Hybris Administration console里使用flexible search试图去查询该customer: 查询到一记录: 该记录的uuid和backoffice里看到的一致:...大括号里定义的customer在Hybris里称为code 从code到真正DB表的映射在xml文件里定义: Hybris Administration console里可以查看每个DB table有多少记录

53700

一种探究 InnoDB 的存储格式的新方式

">; u2 PAGE_N_DIRECTION; u2 PAGE_N_RECS<comment="该页<em>中</em><em>记录</em>的数量(不包括最小和最大<em>记录</em>以及被标记为删除的<em>记录</em>...= supremum_record_pos) { FSeek(page_start_pos + next_rec_rel_pos - 5); // 往前走五个字节,读取<em>记录</em>头,便于获<em>取下</em>一<em>条</em><em>记录</em>的相对位置...因此我们可以在脚本<em>中</em>增加一个行<em>记录</em>的结构体。...= supremum_record_pos) { FSeek(page_start_pos + next_rec_rel_pos - 5); // 往前走五个字节,读取<em>记录</em>头,便于获<em>取下</em>一<em>条</em><em>记录</em>的相对位置...= supremum_record_pos) { FSeek(page_start_pos + next_rec_rel_pos - 5); // 往前走五个字节,读取<em>记录</em>头,便于获<em>取下</em>一<em>条</em><em>记录</em>的相对位置

39920

linux基础命令介绍八:文本分析 awk

每一行输入,对awk来说都是一记录(record),awk使用$0来引用当前记录: [root@centos7 ~]# head -1 /etc/passwd | awk '{print $0}' root...对于每条记录,awk使用分隔符将其分割成列,第一列用$1表示,第二列用$2表示...最后一列用$NF表示 选项-F表示指定分隔符 输出文件/etc/passwd第一行第一列(用户名)和最后一列(登录shell...以上所说的NR、NF等都是awk的内建变量,下面列出部分常用内置变量 $0 当前记录(这个变量存放着整个行的内容) $1~$n 当前记录的第n个字段,字段间由FS分隔 FS...$0,区别是next执行后,其后的命令不再执行,而是读取下一行从头再执行。...工作经常有文本分析的需求,那么掌握这个命令的用法将为你节省大量的时间。

1.3K20

数据挖掘|关联规则Apriori算法

01 — 关联规则挖掘背景和基本概念 如下所示的数据集,表的每一行代表一次购买清单,注意我们只关心记录出现与否,不关心某记录购买了几次,购买十盒牛奶也只计一次。...数据记录的所有项的集合称为总项集,上表的总项集: S={牛奶,面包,尿布,啤酒,鸡蛋,可乐} 关联规则 就是有关联的规则,形式是这样定义的:两个不相交的非空集合X、Y,如果有 X->Y,就说X-->Y...支持度 support(X-->Y) = 集合X与集合Y的项在一记录同时出现的次数 / 数据记录的个数。...例如:support({啤酒}-->{尿布}) = 啤酒和尿布同时出现的次数 / 数据记录数 = 3/5=60% 自信度 confidence(X-->Y) = 集合X与集合Y的项在一记录同时出现的次数...穷举算法 找出所需要的规则就是穷举项集的所有组合,并测试每个组合是否满足条件,一个元素个数为n的项集所需要的时间复杂度为O(2^N)。

1.5K50

Pentest box系列——爬坑记

0x0 前言 本文作为一篇记录文章,将各种问题进行统合,以便省去使用时出现问题百度的时间!其中一些地方参照了各位大佬的姿势,而大部分为偶在使用遇到的一些坑和偶的填补姿势。...说到导入后python命令,我就顺便补充一下安装外工具命令 针对ruby脚本使用以下命令(以wpscan做例子) 同理,针对ruby脚本使用以下命令(以wpscan做例子)...可能有点模糊,偶把红字截取下来 Could not verify the SSL certificate forhttps://rubygems.org/....gem sources -r https://rubygems.org/ ##移除默认源 gem sources -a http://rubygems.org/ ##新增源 或者将以上2命令合并一下...同样这个错误会出现在你盒子运行,之后抓到包,保存桌面进行post时,这个时候的盒子并无法请求到你之后加载到桌面的1.txt文件 ? 解决法子:如果是第一种情况只需要cd回到C盘即可 ?

3.2K100

Python迭代器及自定义迭代器

二、可迭代对象的本质 对可迭代对象进行迭代使用的过程,每迭代一次(即在for...in...每循环一次)都会返回对象的下一数据,一直向后读取数据直到迭代了所有数据后结束。...然后我们可以对获取到的迭代器不断使用next()函数来获取下数据。...self.n = n # 记录当前遍历的下标 self.index = 0 # 斐波那数列前面的两个值 self.num1 = 0...self.num2 = 1 def __next__(self): """被next()函数调用来获取下一个数""" if self.index < self.n...当我们通过for...in...循环来遍历迭代斐波那契数列的前n个数时,会在第n+1次调用next()时抛出StopIteration异常,然后结束for循环,这与Python迭代器的功能是一样的。

96550

InnoDB表聚集索引层高什么时候发生变化

4(INT列) + 6 + 7 + 5 = 22字节 此外,大约每4记录就需要一个directory slot,每个slot需要2字节 综上,假设可以存储N记录,则 N*22 + N/4*2 =...Header共3380字节,共676记录,每条记录需要5字节头信息(再次提醒,表里字段类型各异,Record Header也会随之不同,仅在本例只需要5字节。...VARCHAR(10),但目前只存了5个字符)+6+7+5=28字节 此外,大约每4记录就需要一个directory slot,每个slot需要2字节 综上,假设可以存储N记录,则 N*28 + N...这次表里只有一记录(在它后面没有其他记录“阻碍”它),那么在后面的更新,都可以原地更新,即便是“增长”更新,旧记录也不需要先被删除后新写一记录。...在non leaf page只需要存储聚集索引列(主键键值),因此可存储的记录数一般更多些 对变长列,尽量(比如从业务上想办法)不要反复变长(无论是增长还是缩短)更新 innodb_ruby不错,不过解析

74020

Coinbase 客户分享: 我们如何为应对客户需求的爆发式增长而扩展平台

为迅速解决可扩展性方面的问题,Coinbase工程团队开始把精力集中在系统环境易于实现的目标上。...为何在Ruby处理时间会出现相关的峰值?这个问题会是应用方引起的吗? 简言之,我们现有的监控服务无法利用系统环境的所有可用信息。...我们需要一个框架,以解答上述问题并实现系统环境各组件之间关系的可视化。...我们开始更改MongoDB数据库驱动器,将超出特定响应时间阈值的所有查询操作都记录下来,同时记录重要的场景信息,请求/响应数据量、响应时间、源代码行数和查询形状,从而进一步分析数据库查询操作。...我们决定增加一个查询缓冲层,可以在分布式缓存暂时存储查询结果。在特定的采集活动,如果有对单个文档的查询,在查询数据库前首先会查询缓存,而且任何数据库写操作都会使缓存无效。 ?

95130
领券