|
|
1
2
除了已经建议的索引之外,如果分区表很大,您可能还需要查看分区表。 这里很难具体说明,因为我们的信息非常有限,但是适当的索引和分区可以走很长的路。正确地编制索引可能是一个很长的主题,但在非常普遍的意义上,您需要为查询的列编制索引。 例如,假设您有一个员工表,并且您有SSN、FNAME、LNAME等常用列。除了这些列之外,我们还要说表中还有10列。 现在您有了这个查询:
SSN 可能是这里的主键,并且可能已经有一个唯一的索引,通过创建另一个包含列的复合索引(SSN、FNAME、LNAME),您可能会看到性能优势。这是有益的,因为数据库只需查看复合索引即可满足此查询,因为它包含排序和压缩空间中所需的所有值(也就是说,更少的I/O)。即使仅SSN上的索引是执行完整表扫描的更好的访问方法,数据库仍必须读取索引(I/O)的数据块,找到包含满足查询所需记录指针的值,然后需要读取不同的数据块(读取:更多随机I/O),以便检索fname和lname的实际值。
此处的一些其他链接可能会对您有所帮助: |
|
2
2
正如我看到的,您从数据库请求了40k行,这一数据负载需要时间才能传输。 此外,永远不要问“总体上如何改进”。没有“通用”优化的方法。优化始终是对特定案例进行分析和研究的结果。 |
|
3
1
|
|
|
4
1
在您的示例“WHERE x=y”中,如果y是列名,则也使用y创建一个索引。
此外,归档表也有帮助。我不知道如何做到这一点,主要是DBA任务。 |
|
|
5
1
如果要进行排序或复杂查询,可能需要使用多列索引。例如,如果您正在搜索x.name='y'或x.phone='z'的位置,那么在name,phone上放置索引可能是值得的。简单的例子,但如果你需要这样做,你还需要进一步研究:) |
|
|
6
0
|
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |