我一直在网上搜索,但我似乎无法找到一个我能理解的答案.
亲切的,如果有人可以借助示例向我解释数据库中的基数是什么?
谢谢.
是否有可能确定c ++的基数enum class
:
enum class Example { A, B, C, D, E };
Run Code Online (Sandbox Code Playgroud)
sizeof
但是,我尝试使用它返回枚举元素的大小.
sizeof(Example); // Returns 4 (on my architecture)
Run Code Online (Sandbox Code Playgroud)
有没有一种获得基数的标准方法(在我的例子中为5)?
我主要是一个Actionscript开发人员,绝不是SQL专家,但我不得不开发简单的服务器端.所以,我想我会在标题中向更有经验的人询问这个问题.
我的理解是,通过在一个包含很少不同值的列中设置索引,您不会获得太多收益.我有一个包含布尔值的列(实际上它是一个小的int,但我将它用作标志),并且此列用于我所拥有的大多数查询的WHERE子句中.在理论上的"平均"情况下,一半的记录值将为1而另一半为0.因此,在这种情况下,数据库引擎可以避免全表扫描,但无论如何都必须读取大量行(总行/ 2).
那么,我应该将此列作为索引吗?
为了记录,我正在使用Mysql 5,但是我更感兴趣的是一般的理由,为什么它有/无意义索引一个我知道将具有低基数的列.
提前致谢.
假设您有一个包含1亿行的MySQL 5.0 MyISAM表,在两个整数列上有一个索引(主键除外).
从我对B树结构的不太了解,我认为较低的基数意味着索引的存储效率更好,因为父节点较少.而更高的基数意味着存储效率更低,但读取性能更快,因为它必须通过较少的分支导航才能获得所需的任何数据,以缩小查询的行数.
(注意 - "低"对"高",我并不是说例如100万对比99万对于1亿行表.我的意思是更像是9000万对比9500万)
我的理解是否正确?
相关问题 - 基数如何影响写入性能?
我想一劳永逸地知道如何编写UML基数,因为我经常不得不对它们进行辩论(因此非常欢迎证明和来源:)
如果我想解释一个Mother
可以有几个Child
人,但一个Child
只有一个Mother
,我应该写:
Mother * ---------- 1 Child
Run Code Online (Sandbox Code Playgroud)
要么
Mother 1 ---------- * Child
Run Code Online (Sandbox Code Playgroud)
?
我一直在玩一些非常庞大的数据集,通常是数十亿个元素,这些数据都保存在memcached云中并定期转储到文件中,对于我的一个任务,我正在尝试计算基数的基数.这一套.
对于某些上下文,每个项目包含一个IP和一些其他标识一个人的属性,并以base64编码,项目大小为20个字节.通过删除某些字段来减小项目的大小是不可能的.
这是一个模拟我的数据集作为内存版本的东西(感谢这篇文章生成字符串):
import base64, os
dataset_size = 10000000000 # that's 10 billion, be careful if you run it !
big_dataset = [base64.b64encode(os.urandom(10)) for i in range(dataset_size)]
Run Code Online (Sandbox Code Playgroud)
我的第一种方法是使用这样的hashset:
uniques = set(big_dataset)
print "Cardinality: %d" % len(uniques)
Run Code Online (Sandbox Code Playgroud)
虽然这在理论上适用于小型数据集,但您可以猜测有一个打嗝:
我完成了我的家庭作业,并发现了一些研究论文或一些不起眼的图书馆,但这部分目标的一部分是了解哪种方法有效以及为什么.
所以我打电话给你的Python用户,你知道任何能帮我估算基数的算法吗?复杂性我的意思是我并不关心运行时复杂性,但我更关注空间复杂性.我不介意牺牲一点准确性,如果它极大地提高性能(所以我不一定需要知道uniques的确切数量,即使这是理想的,但可能不是一个可行的方法).我会说高达5%是可以接受的.我正在为这个项目寻找专门用于Python的东西.
感谢您的任何帮助,您可以提供 !
正如一些人所指出的,我可以使用Hadoop/MR,但对于这个特定的项目,我们不想采用MR方式,并且希望探索算法在一台机器上有效地执行此操作,因为这可以应用于其他几个不同的项目.
我认为一般来说使用%>%
不会对速度产生明显影响.但在这种情况下,它运行速度慢了4倍.
library(dplyr)
library(microbenchmark)
set.seed(0)
dummy_data <- dplyr::data_frame(
id=floor(runif(10000, 1, 10000))
, label=floor(runif(10000, 1, 4))
)
microbenchmark(dummy_data %>% group_by(id) %>% summarise(list(unique(label))))
microbenchmark(dummy_data %>% group_by(id) %>% summarise(label %>% unique %>% list))
Run Code Online (Sandbox Code Playgroud)
没有管道:
min lq mean median uq max neval
1.691441 1.739436 1.841157 1.812778 1.880713 2.495853 100
Run Code Online (Sandbox Code Playgroud)
带管:
min lq mean median uq max neval
6.753999 6.969573 7.167802 7.052744 7.195204 8.833322 100
Run Code Online (Sandbox Code Playgroud)
为什么%>%
在这种情况下会这么慢?有没有更好的方法来写这个?
我的学校书籍数据库系统将基数定义如下:
关系的基数是它包含的元组数.相反,元组的数量被称为关系的基数,并且随着元组的添加或删除而改变.高基数 - 许多元组,低基数 - 少数元组.
关于Cardinality(SQL语句)的维基百科文章,定义如下:
基数是指数据库表的特定列(属性)中包含的数据值的唯一性.基数越低,列中重复的元素越多.基数有3种类型:高基数,正常基数和低基数.
它们可能都是正确的,但我无法将这两个定义作为相关定义连接起来.一个改述将是适当的!
我在系统的实时版本上遇到性能问题,我无法在本地重现.
在比较我的本地数据库副本上的一些EXPLAIN结果与实时数据时,我注意到多字段索引不在现场的某些地方使用,而是在本地,并且进一步的调查显示这些索引的基数为现场为NULL.
我猜这是问题所在,但NULL基数是什么意思,它会导致索引不被使用?Optimize会解决这个问题,是否有办法防止它再次发生?我没有完全访问实时MySQL数据库的权限,因此Analyze和Optimize超出了我的正常功能.
非常感谢任何回复!
我正试图找到一种更好的方式来表达我的黄瓜,所以我正在寻找一个序数到基数函数来转换这个:
When I fill up the first passenger field
Then I should see the passenger list update with the first passenger details
When I follow "Add Another Passenger"
Then I should see a second passenger field
When I fill up the second passenger field
Then I should see the passenger list update with the second passenger details
Run Code Online (Sandbox Code Playgroud)
更动态的东西(而不是为每一行创建单独的步骤)
这是我的网页步骤的示例
When /^I fill up the first passenger field$/ do
fill_in("booking_passengers_attributes_0_first_name", :with => "Blah")
fill_in("booking_passengers_attributes_0_last_name", :with => "blah")
select("5' to 6'", :from …
Run Code Online (Sandbox Code Playgroud) cardinality ×10
mysql ×4
indexing ×3
performance ×2
sql ×2
c++ ×1
c++11 ×1
cucumber ×1
database ×1
dplyr ×1
enum-class ×1
magrittr ×1
memcached ×1
null ×1
oop ×1
optimization ×1
oracle ×1
ordinals ×1
python ×1
r ×1
ruby ×1
set ×1
statements ×1
uml ×1