在Python中,我可以找到连接两个列表的唯一方法是list.extend修改第一个列表.是否有任何串联函数返回其结果而不修改其参数?
I want to change the key of an entry in a Python dictionary.
Is there a straightforward way to do this?
在PostgreSQL中,我可以这样做:
ALTER SEQUENCE serial RESTART WITH 0;
Run Code Online (Sandbox Code Playgroud)
是否有Oracle等价物?
是否有SQL指令来检索不增加它的序列的值.
谢谢.
编辑和结论
正如Justin Cave所说,尝试"保存"序列号是没有用的
select a_seq.nextval from dual;
Run Code Online (Sandbox Code Playgroud)
足以检查序列值.
我仍然保持奥利的答案是好的,因为它回答了最初的问题.但要问问自己,如果你想做的话,不要修改序列的必要性.
非常简单的例子 - 一个表,一个索引,一个查询:
CREATE TABLE book
(
id bigserial NOT NULL,
"year" integer,
-- other columns...
);
CREATE INDEX book_year_idx ON book (year)
EXPLAIN
SELECT *
FROM book b
WHERE b.year > 2009
Run Code Online (Sandbox Code Playgroud)
给我:
Seq Scan on book b (cost=0.00..25663.80 rows=105425 width=622)
Filter: (year > 2009)
Run Code Online (Sandbox Code Playgroud)
为什么它不执行索引扫描?我错过了什么?
对于某些不是标识符/不是复合标识符一部分的列,是否可以使用DB序列?
我正在使用hibernate作为jpa提供程序,并且我有一个表有一些生成值的列(使用序列),尽管它们不是标识符的一部分.
我想要的是使用序列为实体创建一个新值,其中序列的列不是主键的一部分:
@Entity
@Table(name = "MyTable")
public class MyEntity {
//...
@Id //... etc
public Long getId() {
return id;
}
//note NO @Id here! but this doesn't work...
@GeneratedValue(strategy = GenerationType.AUTO, generator = "myGen")
@SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE")
@Column(name = "SEQ_VAL", unique = false, nullable = false, insertable = true, updatable = true)
public Long getMySequencedValue(){
return myVal;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我这样做:
em.persist(new MyEntity());
Run Code Online (Sandbox Code Playgroud)
将生成id,但该mySequenceVal属性也将由我的JPA提供程序生成.
只是为了说清楚:我希望Hibernate为mySequencedValue属性生成值.我知道Hibernate可以处理数据库生成的值,但是我不想使用触发器或除Hibernate之外的任何其他东西来为我的属性生成值.如果Hibernate可以为主键生成值,为什么它不能为简单属性生成?
我有一张超过一百万行的表.我需要重置序列并用新值重新分配id列(1,2,3,4 ...等...).有没有简单的方法呢?
我知道cons返回一个seq并conj返回一个集合.我也知道conj将项目"添加"到集合的最佳末端,并cons始终将项目"添加"到前面.这个例子说明了这两点:
user=> (conj [1 2 3] 4) //returns a collection
[1 2 3 4]
user=> (cons 4 [1 2 3]) //returns a seq
(4 1 2 3)
Run Code Online (Sandbox Code Playgroud)
对于矢量,地图和集合,这些差异对我来说很有意义.但是,对于列表,它们似乎相同.
user=> (conj (list 3 2 1) 4) //returns a list
(4 3 2 1)
user=> (cons 4 (list 3 2 1)) //returns a seq
(4 3 2 1)
Run Code Online (Sandbox Code Playgroud)
是否有任何使用列表的示例,其中conjvs cons表现出不同的行为,或者它们是否真的可以互换?换句话说,有一个例子,列表和seq不能等效使用吗?
我们正在考虑使用UUID值作为MySQL数据库的主键.插入的数据是从数十台,数百台甚至数千台远程计算机生成的,并以每秒100-40,000次插入的速率插入,我们永远不会进行任何更新.
在我们开始剔除数据之前,数据库本身通常会达到大约50M的记录,因此不是一个庞大的数据库,但也不是很小.我们也计划在InnoDB上运行,但如果我们正在做的事情有更好的引擎,我们愿意改变它.
我们已准备好使用Java的Type 4 UUID,但在测试中已经看到了一些奇怪的行为.首先,我们将存储为varchar(36),现在我意识到我们最好使用二进制(16) - 尽管我不确定会有多好.
更大的问题是:当我们拥有50M记录时,这个随机数据对索引的影响有多大?如果我们使用例如最左边的位被加时间戳的1型UUID,我们会更好吗?或者我们应该完全抛弃UUID并考虑auto_increment主键?
我正在寻找关于不同类型的UUID在MySQL中作为索引/主键存储时的性能的一般想法/提示.谢谢!
sequence ×10
oracle ×2
postgresql ×2
python ×2
sql ×2
.net ×1
c# ×1
clojure ×1
collections ×1
database ×1
dictionary ×1
f# ×1
hibernate ×1
indexing ×1
innodb ×1
java ×1
jpa ×1
mysql ×1
performance ×1
uuid ×1