首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 範圍查詢實戰:從指定時間點獲取至最新記錄的高效寫法

     編輯:程式設計疑難解答

需求

查詢 time 字段大於等于 '2015-07-05 00:00:00' 的所有記錄,直到最新。

標準 SQL

SELECT * FROM tablename WHERE time >= '2015-07-05 00:00:00';
  • 使用 = 包含邊界,> 排除邊界,視業務而定。
  • 時間字符串格式建議 YYYY-MM-DD HH:MM:SS,MySQL 自動解析。

性能優化建議

  1. 索引:在 time 字段建立普通索引或聯合索引(如 INDEX idx_time (time))。
  2. 避免函數:WHERE DATE(time) >= '2015-07-05' 會導致全表掃描,應改為上述範圍查詢。
  3. 分頁:大量數據配合 LIMIT offset, size 分頁,避免一次性拉取過多。
  4. 覆蓋索引:若只查幾列,建立聯合索引 (time, col1, col2) 實現索引覆蓋。

Java 代碼示例

String sql = "SELECT * FROM orders WHERE create_time >= ?";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
    ps.setTimestamp(1, Timestamp.valueOf("2015-07-05 00:00:00"));
    ResultSet rs = ps.executeQuery();
    // 處理結果
}

總結

範圍查詢配合索引是高效獲取時間段數據的標準做法,切勿對列使用函數破壞索引。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved