【问题标题】:SQL query response time vs table sizeSQL 查询响应时间与表大小
【发布时间】:2016-01-07 19:28:27
【问题描述】:

我有一个由网络浏览器访问的数据库。查询很简单。

从 ID="string" 的表中选择 *

我需要问的问题是,我是否需要担心随着服务器变大,最终用户的响应时间会变得“非常明显”变慢??

(现在查询在 0.00004 秒内返回。我真的不在乎,即使需要几秒钟。)

【问题讨论】:

  • 非常大是什么意思?

标签: php mysql


【解决方案1】:

不,您不必担心。我有一个大约有十亿行的表,它会立即返回。

mysql> show profiles;
+----------+------------+---------------------------------------------+
| Query_ID | Duration   | Query                                       |
+----------+------------+---------------------------------------------+
|        1 | 0.00020500 | select * from xxxx where id = 768273542     |
+----------+------------+---------------------------------------------+
1 row in set (0.00 sec)

【讨论】:

  • 你的id是上面例子中的主键吗?
  • 是的,id是主键。
【解决方案2】:

假设您的ID 是该表的primary key - 不,您不必担心该查询。此外,如果不是您的 primary key,但您添加了索引 (How do I add indices to MySQL tables?),也可以。

确保您再次保护自己 SQL 注入 (How can I prevent SQL injection in PHP?),因此不要直接将您的 path-parameter 或 query-parameter 插入到您的 SQL 查询中。

【讨论】:

  • 谢谢,Id不是主键,主键只是一个AI号。我会考虑添加一个索引,并且我已经防止了 sql 注入。
  • 另外,我刚刚使用命令 ALTER TABLE table ADD INDEX (ID) 为我的表建立了索引(使用您的链接,谢谢)。我如何确认一切顺利?我得到的只是“MySQL 返回了一个空结果集(即零行)。(查询耗时 0.0276 秒。)”
【解决方案3】:

只要 id 列被索引,不,你真的不必担心这个特定的查询。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多