gpt4 book ai didi

mysql - 用于搜索的 SQL 索引

转载 作者:行者123 更新时间:2023-11-29 23:46:35 25 4
gpt4 key购买 nike

假设我在 mysql 中得到了这张表

ID Col1 Col2 Col3 Col4  

ID 列是主键,其他列可以是外键或根本没有键。

这些列的任意组合都可以在 WHERE 中使用搜索时的声明。例如,用户可能会询问结果 where Col1 = 1 and Col3 = 100 |或者类似 Col2 = 10 and Col3 < 1000 and Col4 > 0

当用户发布/删除/修改时,表会经常更新。我应该如何索引该表以加快搜索时间,因为该表可能会随着时间的推移而变得相当大。

我目前正在使用 MySQL,但如果答案不限于 MySQL,那将是理想的选择,因为有一天我可能想将其移至 SQL Server

最佳答案

如果可以在 WHERE 子句中使用任何列组合,并且每种组合的可能性相同,那么您可能不会比创建四个索引(每列一个索引)更好。

但是,在现实世界中,几乎可以肯定每种组合的可能性相同。您可以通过两种不同的方式来解决这个问题。 (上面的不算。)

  1. 创建索引,然后等待人们提示性能。然后创建与投诉相关的索引。 (但有些人宁愿受苦,也不愿提示。)
  2. Log all the queries ,并根据WHERE子句中使用的列的实际分布创建索引。

拥有大量索引会占用空间,但现在空间很便宜。我认为唯一的风险是可能会混淆查询优化器。

关于mysql - 用于搜索的 SQL 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25900263/

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