gpt4 book ai didi

sql - 小表上没有索引?

转载 作者:行者123 更新时间:2023-12-01 19:31:46 24 4
gpt4 key购买 nike

“我们应该忘记小的效率,大约 97% 的情况下:过早的优化是万恶之源。” (唐纳德·高德纳)。我的 SQL 表不太可能每个包含超过几千行(而且这些都是大行!)。 SQL Server 数据库引擎优化顾问认为数据量无关紧要。所以我什至不应该考虑在这些表上放置显式索引。对吗?

最佳答案

索引的值(value)在于加速读取。例如,如果您根据日期列中的一系列日期执行大量 SELECT,则在该列上放置索引是有意义的。当然,通常您会在要频繁 JOIN 的任何列上添加索引。效率增益还与典型记录集的大小与记录数量的比率有关(即,抓取 20/2000 条记录比抓取 90/100 条记录更能从索引中获益)。对未索引列的查找本质上是线性搜索。

索引的成本来自写入,因为每个 INSERT 还需要对每个列索引进行内部插入。

因此,答案完全取决于您的应用程序 - 如果它是一个动态网站,其中读取次数可能是写入次数的 100 倍或 1000 倍,并且您正在根据数据列进行频繁、不同的查找,则索引可能会会有好处的。但是,如果写入次数大大超过读取次数,那么您的调整应该集中在加速这些查询上。

只需很少的时间来识别和基准测试应用程序最频繁的一些操作,无论是否在 JOIN/WHERE 列上使用索引,我建议您这样做。监视您的生产应用程序并识别最昂贵和最频繁的查询,并将优化工作集中在这两组查询的交集上(这可能意味着索引或完全不同的东西,例如为查询或连接缓存)。

关于sql - 小表上没有索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com