我有一个带有时间戳字段的mysql表。
这个表上的大多数查询都是where someIntegerIield=? and theTimestampField is null查询。
我应该使用时间戳字段作为索引的一部分吗?
或者,我是否应该创建和维护另一个字段,当时间戳字段为空时设置为0,否则设置为1?
其他选择也是受欢迎的。
我在MySQL中有两个表,每个表都有自己的日期时间字段。我想复制表A的datetime以覆盖表B的datetime。我使用PHP。
$result = mysql_query("select *
from A
where id = $key");
$row = mysql_fetch_array($result);
print $row[2]."\n"; // $row[2] is the datetime field
mysql_query("upda
目前,我正在设计一个包含数百万行的mysql表结构。我想搜索它的日期,时间,字段,按日期,年份等,但日期将由用户输入,所以它可能不是完整的日期一直。该字段已编入索引。在datetime字段上使用通配符是否足够快?就像这样
SELECT `id`, `moment`, `object_uid`, `content` FROM `events` WHERE moment like '2015%';
它会使用索引吗?
有一个选项可以确定用户是否输入了年份或月份、年份等等,但是我更愿意让MySQL来完成这项工作。
SQLfiddle
我有一个非常大的MySQL表,其中包含大约150,000行数据。目前,当我尝试运行
SELECT * FROM table WHERE id = '1';
代码运行良好,因为ID字段是主索引。然而,对于该项目的最新发展,我必须按另一个字段搜索数据库。例如:
SELECT * FROM table WHERE product_id = '1';
这个字段以前没有索引;但是,我已经添加了一个,所以mysql现在对该字段进行索引,但是当我尝试运行上面的查询时,它的运行速度非常慢。EXPLAIN查询显示,当我已经为product_id字段添加了索引时,它却没有索引,因此
我正在使用一个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' >
我有一个包含近10亿条记录的MyISAM表,其中有三个字段: a、b和c。
该表在列a、b和c上按该顺序具有btree多字段索引。分析索引显示,该索引中字段的基数为:
a: 112 (整型)
b: 2694 (整型)
c: 936426795 (日期时间)
这意味着对于a,大约有100个不同的值,对于b,大约有20个不同的值,对于a和b的每个组合,都有大量的c的值。
我想在a的特定值上执行查询,在c上执行范围查询。
select a, b, c from mytable where a=4 and c >= "2011-01-01 00:00:00" and c <
在Oracle Pl/SQL中给定以下联接:
select a.field1, b.field1, b.field2
from table_a a, table_b b
where a.field2 = b.field3;
当在MySQL中执行这段代码时,它需要很长的时间来完成任务,而在Pl/SQL中则不需要时间。这两个环境中的表是相同的。没有字段被编入索引。
这两种方言中的连接词有区别吗?这在标准SQL中的正确翻译是什么?
我需要忽略DateTime列中的时间部分来比较MySQL中的日期。我已经尝试了下面的SQL。
SELECT * FROM order_table where order_date=date_format('2012-05-03', '%Y-%m-%d');
即使MySQL表中有日期2012-05-03 10:16:46,它也不会检索任何行。在MySQL中比较日期时,如何忽略DateTime字段中的时间部分?
如何在日期时间字段的日期部分创建索引?
mysql> SHOW COLUMNS FROM transactionlist;
+-------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+----------
下面的MYSQL语句耗时0.577251秒:
SELECT synonym_group FROM synonym WHERE name LIKE '%ak%'
名称是varchar(250)字段。同义词数据库表中目前有356,187条记录。数据:21MB。索引:23MB。总大小:45MB。每行字节数: 67。
那么0.577251秒是一个合理的时间吗?如果不是,是什么,我应该做什么?我已经阅读了几篇关于这类问题的帖子,我能看到的主要解决方案是使用像sphinx这样的东西。
事实是,我的表中的几个字段可能是无关的。比方说,如果我将每行的字节数减半,通过删除不必要的字段,这会使搜索
对于我需要解决的数据,我有一个小小的挑战。我有一张桌子,电子邮件的纯文本存储在一个长文本列中。在我开始开发这个框架之前就是这样的。已经有超过一百万行的邮件被储存在里面。
我需要能够搜索该字段中的文本,但返回任何结果需要很长时间。这并不理想,因为有数以百计的用户使用该系统,他们需要搜索电子邮件内容的能力。
我尝试了以下简单的SQL语句,但找到记录花费了太长时间:
select id from emails where description like "%hello world%";
根据MySQL文档,全文索引只能用于char、varchar和text字段。
有人能建议一种在长
我目前正在从事一个项目,其中涉及更改存储在MYSQL数据库中的数据。由于我正在处理的表没有键,所以我使用以下命令添加一个键:
ALTER TABLE deCoupledData ADD COLUMN MY_KEY INT NOT NULL AUTO_INCREMENT KEY
由于我希望根据选定的字段对记录进行分组,因此我尝试为包含MY_KEY和选定字段的表deCoupledData创建一个索引。例如,如果要使用字段STATED_F和NOT_STATED_F,请键入:
ALTER TABLE deCoupledData ADD INDEX (MY_KEY, STATED_F, NOT_STAT
我有一个查询,它使用主键来更新表中的字段以定位行。该表可以包含许多行,其中日期/时间字段最初为NULL,然后使用NOW()使用日期/时间戳进行更新。
当我在表上运行update语句时,我得到一个缓慢的查询日志条目(3.38秒)。日志显示检查了200,000行。如果我使用PK来标识正在更新的行,为什么要检查那么多行?
主键是item_id和customer_id。我已经验证了主键在mySQL表结构中是正确的。
UPDATE cust_item
SET status = 'approved',
lstupd_dtm = NOW()
WHERE customer