我正在设计一个保存科学数据的数据库。每个数据都有一个唯一的时间戳(以纪元时间表示)和8个双精度数。我计划将每个实验保存在它自己的表中,可能会有100,000-10,000,000行。我还看到绝大多数DB读取是一次从一个表中读取的,按照时间戳的顺序请求每一行,或者按时间戳的时间顺序请求一些连续的行块。我知道在最抽象的意义上,db数据是无序的,但是有没有一种方法可以给数据库一个提示,即大多数查询(如果不是所有的查询)都会按特定的列进行排序,从而允许数据库按该列对所有内容进行排序,并加快读取速度?
如果有问题,我使用的是MySQL:
$ mysql --version
mysql Ver 14.1
我目前有一个MySQL数据库,每天增长大约50,000行。在从数据库中查询数据时,我从info表中查询信息,并使用session表上的子查询按日期范围细化如下:
SELECT info.sessionID, info.otherstuff, t.time FROM info
INNER JOIN
(SELECT session.sessionID, session.time FROM session
WHERE session.time > :afterSomeDate AND session.time < :beforeSomeOtherDate) as t
ORDER BY
我有一个基本的MySQL查询:
$getFeed = "SELECT posts.postID, posts.postTitle, .....
FROM posts
LEFT JOIN users ON posts.userID = users.id
LEFT JOIN postScore ON posts.postID = postScore.postID
GROUP BY posts.postID
$feedResult = mysql_query($getFeed) or die;
while($row1 = mysql_fetch_array($feed
我有一个MySql数据库,它使用时间戳字段来跟踪条目插入的时间。
现在我想按日期范围查询表中的条目。
我更喜欢使用MySql来提取记录,而不是提取所有记录,然后在php中迭代和比较日期。
所以我有一个开始日期和一个结束日期。我已经尝试了YYYYMMDD和YYYY-MM-DD格式,但在这两种查询上都没有成功:
// this doesn't appear to be working
SELECT COUNT(*) FROM table_name
WHERE DATE(timestamp_row) BETWEEN '{$date1}' AND '{$date2};
我有这样的数据库:
+----------+----------+------+
| username | password | time |
+----------+----------+------+
| a | b | 1234 |
| c | d | 5678 |
| e | f | 9012 |
+----------+----------+------+
现在我得按时间安排这个,所以我跑了:
mysql_query("SELECT * FROM `table` ORDER BY `time`
我有一个mysql数据库和一个简单的查询,当通过Eclipse中的hibernate查询编辑器执行查询和直接在Mysql中执行相同的查询时,我注意到查询时间有所不同,表有60524个条目(行)
hibernate查询是
from AppLog a
它需要3,4秒
hibernate按如下方式构造原生sql
select
applog0_.ID_APP_LOG as ID1_706_,
applog0_.ID_APP_MODULE_EVENT as ID5_706_,
applog0_.DATE_INSERT as DATE2_706_,
applog0_.DESCRIPTION
我正在使用一个MYSQL数据库,其中开发人员已将日期存储为时间戳,而不是可以查询的“日期时间”字段。 下面的查询创建了一个'AS‘字段date_formatted,并且输出是正确的。 但是,不能在WHERE语句中使用该字段来按日期限制它 按照日期范围限制时间戳的正确语法是什么? SELECT *,DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%Y-%m-%d %H:%i:%s') AS 'date_formatted'
FROM `table`
where 'date_formatted' >
我正在从一个shell运行一些MySQL查询。在查询结果的末尾,MySQL打印结果中的行总数和持续时间。
mysql>select * from mytable;
[Query result here]
1000000 rows in set (1.50 sec)
1.5秒是什么意思?从我的试验中,我知道这并不是全部的查询持续时间。这是数据库引擎内的查询处理时间吗?还是别的什么?
我有一个包含2000万行的MySQL表。查询此数据库花费的时间太长。数据库格式如下:
Column Column Column Sector
data data data Retail
data data data Utility
data data data Retail
data data data Insurance
data data data Retail
data data data Agriculture
da
我正在尝试优化表单SELECT SQL_NO_CACHE col FROM TABLE ..的查询。当我第一次连接到数据库并执行查询时,大约需要9秒。当我第二次执行查询时,几乎需要0.1秒。我将放在查询中,以确保mysql不会从缓存中读取结果。我的问题是,为什么在连接到数据库(mysql -uroot ... )之后第一次执行查询所需的时间比后续执行的时间要长得多。查询的实际执行时间是多少?
我正在学习索引,我想我应该尝试使用MySQL Sakila数据库进行一个实验。我有以下查询:
SELECT title, release_year
FROM film
WHERE release_year < 2010
AND rating = 'R';
这是我尝试的第一个索引:
CREATE INDEX idx_releaseYear ON film(rating);
当我运行查询时,MySQL解释返回了以下内容:
编辑:我对这些结果的解释是: MySQL使用索引(按等级排序)快速查找所有R级电影,然后检查索引返回的每一行的发行年份。
接下来,我创建了一个关于
我的MySQL数据库中有一个时间戳字段,它被映射到bean中的DATE数据类型。现在,我需要一个查询,通过这个查询,我可以获取数据库中的所有记录,对于这些记录,当前时间戳与存储在数据库中的时间戳之间的区别是> 20分钟。
我该怎么做呢?
我想要的是:
SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes
对此是否有任何MySQL函数,或者在SQL中有什么方法可以做到这一点?
我正在优化MySQL查询,但遇到了一个奇怪的问题。我从不使用实时生产数据库,因此我创建了一个转储,并使用mysqldump将其导入到本地计算机上的数据库中,没有额外的选项。
生产数据库上的mysql版本与我的本地虚拟机几乎完全相同:
生产: mysql 14.14远端5.1.61,用于debian gnu (x86_64),使用readline 6.2
虚拟机: mysql 14.14远端5.1.63,debian gnu (x86_64),使用readline6.2
这个查询非常复杂,在生产过程中需要4到5秒左右,但是在VM上所花费的时间不到1秒。我唯一能想到的是,生产数据库上可能有锁阻止查