Tag: 数据库

何时以及为什么数据库连接费用高昂?

我正在做一些数据库研究,我正在关注关系数据库的一些限制。 我得到的是大桌子的连接是非常昂贵的,但我不完全确定为什么。 DBMS需要做什么来执行连接操作,瓶颈在哪里? 如何反规范化有助于克服这一代价? 其他优化技术(如索引)如何提供帮助? 个人经验值得欢迎! 如果您要发布资源链接,请避开维基百科。 我知道哪里可以find。 与此相关,我想知道像BigTable和SimpleDB这样的云服务数据库使用的非规范化方法。 看到这个问题 。

只有在行更改后,MySQL才会触发更新

只有在数据被真正改变的情况下,才有可能使用“更新后”触发器。 我知道“新和旧”。 但是,使用它们时,我只能比较列。 例如“NEW.count <> OLD.count”。 但我想要的东西:运行触发如果“新<>老” 一个例子: create table foo (a INT, b INT); create table bar (a INT, b INT); INSERT INTO foo VALUES(1,1); INSERT INTO foo VALUES(2,2); INSERT INTO foo VALUES(3,3); CREATE TRIGGER ins_sum AFTER UPDATE ON foo FOR EACH ROW INSERT INTO bar VALUES(NEW.a, NEW.b); UPDATE foo SET b = 3 […]

SQLite的UPSERT – 重复密钥更新

MySQL有这样的东西: INSERT INTO visits (ip, hits) VALUES ('127.0.0.1', 1) ON DUPLICATE KEY UPDATE hits = hits + 1; 据我所知这个function在SQLite中不存在,我想知道的是,如果有任何方法来归档相同的效果,而不必执行两个查询。 另外,如果这是不可能的,你更喜欢什么: SELECT +(INSERT或UPDATE)或 更新(+ INSERT 如果更新失败 )

公开数据库ID – 安全风险?

我听说公开数据库ID(例如在URL中)是一种安全风险,但是我很难理解为什么。 任何意见或链接,为什么这是一个风险,或为什么不是? 编辑:当然访问是有作用域的,例如,如果你不能看到资源foo?id=123你会得到一个错误页面。 否则,URL本身应该是秘密的。 编辑:如果URL是秘密的,它可能会包含一个有限生命周期的生成令牌,例如1小时有效,只能使用一次。 编辑(几个月后):我目前的首选做法是使用UUIDS的ID和暴露他们。 如果我使用序列号(通常用于某些数据库上的性能)作为ID,我喜欢为每个条目生成一个UUID标记作为备用密钥,然后公开这个标记。

在Android上简单导出和导入SQLite数据库

我想实现一个简单的SQLite导出/导入用于备份的目的。 导出只是存储原始current.db文件的副本。 我想要做的导入就是删除旧的current.db文件,并将imported.db文件重命名为current.db 。 这可能吗? 当我尝试这个解决scheme时,我得到以下错误: 06-30 13:33:38.831: ERROR/SQLiteOpenHelper(23570): android.database.sqlite.SQLiteDatabaseCorruptException: error code 11: database disk image is malformed 如果我在SQLite浏览器中查看原始数据库文件,它看起来很好。

如何在SQL中随机select行?

我正在使用MSSQL Server 2005.在我的分贝,我有一个表“customerNames”有两列“Id”和“名称”和约。 1,000个结果。 我正在创build一个function,我必须每次随机select5个客户。 任何人都可以告诉我如何创build一个查询将获得随机5行(ID和名称)每次执行查询时?

在Android SQLite中处理date的最佳方法

我在使用SQLite的Android应用程序上处理date方面遇到了一些麻烦。 我有几个问题: 我应该使用什么types的存储dateSQLite(文本,整数,…)? 鉴于存储date的最佳方式,我如何使用ContentValues正确存储它? 从SQLite数据库检索date的最佳方法是什么? 如何在SQLite上进行SQLselect,按datesorting结果?

Android:升级数据库版本并添加新表

我已经为我的应用程序创build了sqlite表,但是现在我想向数据库添加一个新表。 我改变了DB版本如下 private static final int DATABASE_VERSION = 2; 并添加string来创build表 private static final String DATABASE_CREATE_color = "CREATE TABLE IF NOT EXISTS files(color text, incident_id text)"; onCreate和onUpgrade如下: @Override public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE_incident); database.execSQL(DATABASE_CREATE_audio); database.execSQL(DATABASE_CREATE_video); database.execSQL(DATABASE_CREATE_image); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //drop table and add new tables when version […]

什么是多语言数据库devise的最佳实践?

创build多语言数据库的最佳方法是什么? 为每个表创build本地化表正在进行复杂的devise和查询,在其他情况下,为每种语言添加列是简单的但不是dynamic的,请帮助我了解什么是企业应用程序的最佳select

存储的数据奇怪的字符编码,旧的脚本显示他们罚款新的没有

我正在尝试重写一个旧网站。 它是使用perso /阿拉伯字符的波斯语。 CREATE DATABASE `db` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci; USE `db`; 几乎所有我的表/列COLLATE都设置为utf8_persian_ci 我使用codeigniter为我的新脚本,我有 'char_set' => 'utf8', 'dbcollat' => 'utf8_persian_ci', 在数据库设置中,那里没有问题。 所以这里是奇怪的部分 旧的脚本正在使用某种名为TUBADBENGINE或TUBA DB ENGINE …没什么特别的。 当我使用旧脚本在数据库(波斯语)中input一些数据时,当我查看数据库时,字符被存储为عمران 。 旧脚本获取/显示数据正常,但新脚本显示与数据库相同的怪异字体/字符集 所以,当我inputاااا ,数据库存储的数据看起来像عمرا٠,当我在新脚本中获取它我看到عمراÙ但在旧的脚本我看到اااا CREATE TABLE IF NOT EXISTS `tnewsgroups` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `fName` varchar(200) COLLATE utf8_persian_ci DEFAULT NULL, PRIMARY KEY (`ID`) […]