mysql - 演示索引 SQL 表的性能优势

标签 mysql sql join indexing sqlfiddle

我一直听说 SQL 表的“正确”索引是性能的关键。我从未见过这方面的真实示例,并且想使用 SQLFiddle 制作一个示例但不确定执行此操作的 SQL 语法。

假设我有 3 个表:1) Users 2) Comments 3) Items。 假设任何用户都可以评论每个项目。因此,要获得 item=3 的评论,SQL SELECT 应该是这样的:

SELECT * from comments join users on comments.commenter_id=users.user_id 
WHERE comments.item_id=3

我听说一般来说,如果行数变大,即数以千计/数百万,应该将索引放在 WHEREJOINed柱子。所以在这种情况下,comments.item_idcomments.commenter_idusers.user_id

我想做一个 SQLFiddle比较将这些表编入索引与不为每个表使用数千、数百万行。有人可以帮助生成此 SQLFiddle 吗?

最佳答案

我是 SQL Fiddle 的所有者。它绝对不是为性能测试生成庞大数据库的地方。还有太多其他变量是您无法(但在现实生活中应该)控制的,例如内存、硬盘配置等……此外,作为共享环境,还有其他人可以使用它也会影响你的测试。也就是说,您仍然可以在 sqlfiddle 中构建一个小型数据库,然后查看有索引和无索引的查询的执行计划。无论其他环境因素如何,这些都将是一致的,并且将成为学习优化的良好来源。

关于mysql - 演示索引 SQL 表的性能优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158309/

相关文章:

iphone - 核心数据同步 - 跟踪删除的对象

MySQL 过程 - 内部 for 循环条件未产生正确的输出

sql - 选择子句 : Optional Columns?

hibernate - HQL 右外连接

MySql 指定为定义者的用户 ('mysql.infoschema' @'localhost' ) 不存在

php - 如何进行正确的时间计算?

arrays - 在 Powershell 中,如何将一组对象的一个​​属性连接成一个字符串?

mysql - 通过分割字段连接表

python - 如何在scrapy中使用spider从mysql获取数据并从web中提取数据

python - 获取日期和时间的时间戳