Tag: sql

内存高效(恒定)和速度优化迭代在Django的一个大表上

我有一个非常大的桌子。 它目前在MySQL数据库中。 我用django。 我需要遍历表的每个元素来预先计算一些特定的数据(也许如果我是更好的我可以做,但这不是重点)。 我想尽可能快地使用内存来保持迭代。 因为它已经清楚地限制了内存在大型Django QuerySet中的使用,并且为什么要通过一个耗费大量内存的大型Django QuerySet进行迭代? ,对django中所有对象的简单迭代将会终止该机器,因为它将从数据库中检索所有对象。 迈向一个解决scheme 首先,为了减less你的内存消耗,你应该确保DEBUG是False(或者猴子补丁游标: closuresSQL日志logging,同时保持settings.DEBUG? ),以确保django没有存储的东西connectionsdebugging。 但即使如此, for model in Model.objects.all() 是不行的。 甚至没有稍微改进的forms: for model in Model.objects.all().iterator() 使用iterator()将通过不在内部存储caching结果(尽pipe不一定在PostgreSQL上iterator()来节省一些内存。 但显然还是会从数据库中检索整个对象。 一个天真的解决scheme 第一个问题的解决scheme是通过chunk_size基于计数器来分割结果。 有几种写法,但基本上都是SQL中的OFFSET + LIMIT查询。 就像是: qs = Model.objects.all() counter = 0 count = qs.count() while counter < count: for model in qs[counter:counter+count].iterator() yield model counter += chunk_size 虽然这是内存有效率(恒定的内存使用量与chunk_size成正比),但是在速度方面确实很差:随着OFFSET的增长,MySQL和PostgreSQL(也可能是大多数数据库)都将开始窒息并放慢速度。 […]

如何使用Shift-JIS和CP932创buildSQL注入攻击?

我正在写一些unit testing,以确保我的代码不容易在各种字符集下的SQL注入。 根据这个答案 ,您可以通过使用以下字符集之一注入\xbf\x27来创build漏洞: big5 , cp932 , gb2312 , gbk和sjis 这是因为如果您的助手configuration不正确,它会看到0x27并尝试转义它,使其成为\xbf\x5c\x27 。 但是, \xbf\x5c实际上是这些字符\xbf\x5c的一个字符,因此引号( 0x27 ) \xbf\x5c转义。 但是,正如我通过testing发现的,这不完全正确。 它适用于big5 , gb2312和gbk但在sjis和cp932都不是0xbf27或cp932 。 都 mb_strpos("abc\xbf\x27def","'",0,'sjis') 和 mb_strpos("abc\xbf\x27def","'",0,'cp932') 返回4 。 即PHP不会将\xbf\x27看作单个字符。 这将返回false为big5 , gb2312和gbk 。 另外,这个: mb_strlen("\xbf\x5c",'sjis') 返回2 (它为gbk返回1 )。 所以,问题是:是否有另一个字符序列,使sjis和cp932容易受到SQL注入,或者他们实际上不是脆弱的? 或者说是PHP说谎,我完全错了,MySQL会完全不同的解释?

整数在SQL Server T-SQL中的最大值常量?

在T-SQL中是否有像在其他语言中提供数据types的最大和最小值范围的常量? 我有一个代码表,其中每行都有一个上限和下限范围列,我需要一个条目表示一个范围,其中上限是一个int可以容纳的最大值(有点像hackish infinity)。 我宁愿不要硬编码,而是使用像SET UpperRange = int.Max

如何在预先存在的SQL数据库上使用弹性search?

我一直在阅读大量有关如何在JavaScript或PHP网站上实现弹性search的文档。 很好的ES介绍 。 非常完整的文档在这里和这里 。 整个CRUD 。 用PHP弹性search: 在这里 , 在这里 , 在这里 。 所以我给你这些URL的原因是要理解如何在使用预先存在的SQL DB时使用其中的一个或多个文档。 我在某处丢失了一点:正如他们所说的,Elasticsearch将使用MongoDB创build自己的索引和数据库,我不明白如何使用我的(巨大的)使用SQL的数据库? 假设我有一个MySQL数据库,我想用Elasticsearch使我的研究更快,并提出用户预先提出的查询,我该怎么做? ES如何在MySQL上工作? 如何将这个巨大的数据集(超过8GB)转换成ES数据库,以便在开始时实现高效率? 非常感谢

什么时候应该使用主键或索引?

什么时候应该使用主键或索引? 他们的区别是什么,哪一个是最好的?

你为什么要把一个索引放在一个视图上?

Microsoft SQL Server允许您为视图添加索引,但为什么要这样做呢? 我的理解是,一个视图实际上只是一个子查询,即如果我说SELECT * FROM myView,我真的说SELECT * FROM(myView的查询) 看起来底层表上的索引似乎是最重要的索引。 那么为什么你要在视图上单独索引?

Oracle中的varchar(max)等价于什么?

Oracle中的varchar(max)等价于什么? CLOB?

像'%Query%'和全文searchCONTAINS查询的性能

我有一个情况,我想search一个单词 。 对于这种情况,从性能angular度来看哪个查询是好的? Select Col1, Col2 from Table Where Col1 Like '%Search%' 要么 Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search') ?

在Sql Server中计算

我试图执行下面的计算 样本数据: CREATE TABLE #Table1 ( rno int identity(1,1), ccp varchar(50), [col1] INT, [col2] INT, [col3] INT, col4 as [col2]/100.0 ); INSERT INTO #Table1 (ccp,[col1],[col2],[col3]) VALUES ('ccp1',15,10,1100), ('ccp1',20,10,1210), ('ccp1',30,10,1331), ('ccp2',10,15,900), ('ccp2',15,15,1000), ('ccp2',20,15,1010) +—–+——+——+——+——+———-+ | rno | ccp | col1 | col2 | col3 | col4 | +—–+——+——+——+——+———-+ | 1 | ccp1 | 15 | 10 […]

有没有一个重构SQL的工具,有点像SQL的ReSharper

我现在所追求的东西是相当基本的: 自动格式 检测未使用的variables variables命名约定检查 如果有一个工具可以处理更复杂的重构(比如重构数据库中的重构) ,我不会感到惊讶,但是我明白当前数据库结构和数据状态引入的复杂性可能会阻止其中的许多重构 。 我想我是在ReSQLer之后