标签: database

Rails:对param1 ==某个值的所有列元素求和

我想从表列中总结所有元素(例如价格),其中一些值(类型)等于某个参数(1):

id type price
-------------
1  1    10
2  1     8
3  2     7
4  1     2
Run Code Online (Sandbox Code Playgroud)

我想,它可能是这样的:

Table.where(:type => 1). ???
Run Code Online (Sandbox Code Playgroud)

我需要20点.

database sum ruby-on-rails

5
推荐指数
1
解决办法
3063
查看次数

SQLITE查询性能差异太大,不可靠或无法理解

短版的问题.

有时,通常在一秒钟内运行的查询(使用索引)需要一分钟甚至更长时间才能执行.EXPLAIN显示没有进行全表扫描.数据库很大(2 Gb,4.5百万条记录)并且是专门使用的.再次重新运行相同的查询很快.直到某个特殊时刻......

长版本的问题.

我在SQLITE上有一个日志数据库:

    CREATE TABLE log( id integer primary key autoincrement,
  msg text,
  created_at int,
  kind text,
  computer text,
  process text,
  who text
  );
    CREATE INDEX idxlog_created_at ON log(created_at);
    CREATE INDEX idxlog_kind_computer_id ON log(kind,computer,id);
    CREATE INDEX idxlog_kind_computer_process_id ON log(kind,computer,process,id);
    CREATE INDEX idxlog_kind_computer_process_who_id ON log(kind,computer,process,who,id);
    CREATE INDEX idxlog_kind_id ON log(kind,id);
Run Code Online (Sandbox Code Playgroud)

kind ===>'debug','error','warn','info'
计算机===>计算机名称
进程===>进程名称
===>组件名称(发送消息进行记录)

索引创建是为了确保快速响应对日志的任何可能查询.id列包含在索引中以确保快速ORDER BY.

Sqlite:3.7.7.1
平台:Windows XP
语言:Delphi通过sqlite3.dll(来自sqlite.org)
Pragma(在这个特定的连接上):

PRAGMA encoding = "UTF-8"; 
  PRAGMA foreign_keys = ON; 
  PRAGMA synchronous = NORMAL; 
  PRAGMA …
Run Code Online (Sandbox Code Playgroud)

database sqlite performance windows-xp

5
推荐指数
1
解决办法
1163
查看次数

单个mysql表用于私人消息传递

我正在尝试在网站上创建一个用于私人消息传递的表.我创建了下表,我认为这是有效的,但我真的很感激一些反馈.

CREATE TABLE IF NOT EXISTS `pm` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `to` int(11) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `subject` varchar(255) DEFAULT NULL,
  `message` text NOT NULL,
  `read` tinyint(1) NOT NULL DEFAULT '0',
  `deleted` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
  FOREIGN KEY (user_id) REFERENCES User(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)

我有2列确定消息的状态:readdeleted

如果read = 1,接收方已读取该消息.如果deleted = 1发件人或收件人从发送或收到的收件箱中删除了邮件.如果deleted = 2两个用户都删除了该消息,则从数据库表中删除该行.

php mysql database database-design

5
推荐指数
2
解决办法
2490
查看次数

数据库管理系统通常会绕过文件系统吗?

我的一般理解是典型的数据库管理系统绕过文件系统是否正确?我知道他们在磁盘上管理自己的空间,他们将实际数据和索引系统(如B树)直接写入磁盘块,绕过文件系统的任何中间帮助.

这假设root将为数据库用户提供直接从磁盘块读取和写入的权限.在Linux中,由于可以将磁盘视为文件,因此这仍然更容易.

任何指向真实案例研究的指针都将不胜感激.

mysql database filesystems storage operating-system

5
推荐指数
1
解决办法
1035
查看次数

Android打开或创建数据库

我想在我的SD卡上创建一个数据库.每当我调用SQLiteDatabase.openOrCreateDatabase时,我都会收到错误:

07-21 13:33:17.587:ERROR/AndroidRuntime(5541):引起:android.database.sqlite.SQLiteException:无法打开数据库文件

有谁知道这可能导致什么?这是我在数据库类的open()方法中的代码:

File sdcard = Environment.getExternalStorageDirectory();

String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + Schema.DATABASE_NAME ;

db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
Run Code Online (Sandbox Code Playgroud)

database sqlite android sd-card

5
推荐指数
1
解决办法
8218
查看次数

反对SQL触发器的原因是将数据插入到其他表中?

我被一个在我们公司拥有某种权限的人告诉我,在数据库中创建触发器以改变另一个表中的行是一个"数据库禁止".

我已经使用这种技术来创建默认的初始配置,自动维护审计日志,以及在连接到该数据库的异构应用程序内持续维护的各种其他事情.十多年来,我已经读到这是一种集中关系约束维护并从与数据交互的应用程序中获取责任的适当方式.

因此,我的BS仪表与此挂钩.我是否遗漏了一些根本错误的技术,这使得它一般都是不好的做法?

sql database triggers

5
推荐指数
1
解决办法
587
查看次数

简单的纬度/经度+整数数据库?

是否存在快速,持久的数据库,用于存储纬度,经度和整数值以进行快速地理空间查找?

我的想法是,我有很多ID不同的东西,我想通过纬度/经度方块搜索给定位置的所有ID.

我的第一个想法是创造性地使用像membase或redis这样的键值存储.但是,我无法找出一种基于纬度和经度等属性进行搜索的方法,而不是创建设置大小的lat/lon块并将所有id作为值(这不能很好地工作).

database geospatial key-value-store

5
推荐指数
1
解决办法
581
查看次数

如何仅使用ibdata和*.ibd文件为MySQL InnoDB表重新创建FRM文件?

这与我在stackoverflow上看到的相关InnoDB修复问题略有不同.

假设我使用innodb_file_per_table = 1在MySQL 5.1数据库中恢复了以下内容:

db/tablename.ibd
innodb/ibdata1
innodb/ib_logfile0
innodb/ib_logfile1
Run Code Online (Sandbox Code Playgroud)

我丢失了db/tablename.frm文件.我可以启动数据库服务器,但InnoDB抱怨:

110723 13:26:33  InnoDB: Error: table 'db/tablename'
InnoDB: in InnoDB data dictionary has tablespace id 5943,
InnoDB: but tablespace with that id or name does not exist. Have
InnoDB: you deleted or moved .ibd files?
Run Code Online (Sandbox Code Playgroud)

我怎样才能重建FRM文件?

mysql database innodb restore database-restore

5
推荐指数
1
解决办法
1万
查看次数

Rails通过现有数据库进行迁移

我正在创建一个新的Rails 3.1应用程序.我希望这个新应用程序重用现有数据库(由以前的rails 2应用程序创建).

我创建了定义模型的新应用程序,它重用了数据库中的一些现有数据.

在开发和测试阶段,一切正常,因为它在一个干净的工作表数据库上运行,但在尝试部署到生产时,我得到的消息如下:

PGError: ERROR:  column "email" of relation "users" already exists
*** [err :: localhost] : ALTER TABLE "users" ADD COLUMN "email" character varying(255) DEFAULT '' NOT NULL
Run Code Online (Sandbox Code Playgroud)

但是我在迁移中的想法就像

class DeviseCreateUsers < ActiveRecord::Migration
  def change
    change_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable
      t.timestamps
    end
end
Run Code Online (Sandbox Code Playgroud)

如何使db:migrate忽略已存在的内容并仅更改新内容和/或新类型?

我在stackoverflow上看到了类似的问题,但没有人回答这个问题.谢谢你的回答.

ruby database postgresql ruby-on-rails rails-migrations

5
推荐指数
1
解决办法
2712
查看次数

从mongodb对象获取属性列表

可以理解的是,由于数据库模式较少,我们无法做到但是如果我们采用一条记录,例如db.collectionname.findOne(),则它不是模式较少的.它有固定的属性.如何减少该属性?

database mongodb

5
推荐指数
1
解决办法
2946
查看次数