我正在设计一个大型数据库.在我的应用程序中,我将有许多行,例如,我目前有一个表,其中有400万条记录.我的大多数查询都使用datetime子句来 Select 数据.在mysql数据库中索引datetime字段是个好主意吗?

Select field1, field2,.....,field15
from table where field 20 between now() and now + 30 days 

我正在努力保持我的数据库工作良好,查询运行顺畅

此外,你认为我应该有什么 idea 来创建一个高效的数据库?

推荐答案

MySQL建议使用索引有多种原因,包括消除条件之间的行:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

如果要在查询中频繁使用datetime列,它将成为索引的最佳候选.如果您唯一的条件是BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY),并且该条件中没有其他索引,那么MySQL将不得不对每个查询执行full table scan.我不确定在30天内生成了多少行,但只要它小于总行数的1/3,在列上使用索引就会更有效.

你关于创建高效数据库的问题非常广泛.我想说的是,只需确保它是规范化的,所有适当的列都被索引(即连接和where子句中使用的列).

Mysql相关问答推荐

MariaDB /SQL僵局-并发插入

过程/别名是有点长的MySQL命令的一部分吗?

拒绝非超级用户访问停靠的MariaDB(超级用户工作)

为分组记录MySQL取取值为TRUE的单行

如何跨多个产品查找相同时间范围的数据集

为什么我的带有索引字段和非索引字段的 Select 有时需要很长时间

从MySQL JSON列中检索数组中的所有答案

布尔值之间的 SQL less/greater 比较会产生意外结果

根据时间戳分组删除

基于多个 where 子句在规范化表中查找公共 ID(值)

根据 Power Query 中的条件替换值

仅当 SELECT 语句在 MySQL 中给出空集时才执行 UPDATE 语句

使用索引进行查询优化

「已解决」MySQL 连接在 vb6 上出现运行时错误 -2147467259 (80004005),但在 VBA Excel 上工作

Mysql Pivot 查询/建议

为什么这个 NOT NULL 到 NULL 迁移会触发大量 I/O 操作?

如何通过 mysql workbench 将数据导入 mysql 数据库?

字符ي和ی以及波斯语的区别 - Mysql

将 MySQL 数据库置于版本控制之下?

带有 OuterRef 的简单子查询