gpt4 book ai didi

mysql查询和索引怎么做

转载 作者:行者123 更新时间:2023-11-29 04:27:30 24 4
gpt4 key购买 nike

我需要手动索引一个大表!我不知道索引 mysql 表

这是我从表中排序行时的查询

                     SELECT  "posts.* AS `posts` , user.nickname AS nickname
FROM `posts`
LEFT JOIN user AS user ON (user.userid = posts.userid )
WHERE
posts.userid= '" . intval($bbinfo['userid']) . "'
ORDER BY posts.timestamp DESC
LIMIT $start , $_limit
"

在向表中插入新帖子后,如何使用索引为该表编制索引?或者通过提醒表我可以在何时何地使用索引表以及如何使用?请帮忙

最佳答案

只需创建索引并定义它的工作方式。那你就无事可做了。如果 SQL 存储引擎认为你的索引应该被使用,他就会使用它。当您创建或更新数据时,它会得到维护。

现在困难的部分是索引的定义

您可以将索引视为订单,就像您使用电话簿时一样。您的电话簿按城市排序,然后是姓氏,然后是名字。它是存储在表附近的排序器,引擎可以使用它比需要读取整个表数据时更快地找到结果。

在电话簿中只有一个索引,因此数据是根据该索引排序的。在数据库中,您可以有多个索引,因此它们存储在表附近,并包含指向真实数据地址的指针。

当您搜索数据时,索引非常重要。您可以在纽约轻松找到名叫 Smith 的人。很难在美国所有城市找到所有 Smith(用电话簿)。

在您的查询中,您有两条可能受益于索引的指令。您正在按用户过滤,然后按时间戳排序

如果您按用户创建索引,然后加上时间戳,引擎将通过简单地读取索引就已经有了您的查询的解决方案。

所以我会创建这个:

CREATE index posts_user_and_timestamp_idx ON posts(userid, timestamp DESC);

并且该索引可以重复用于您仅按用户过滤的所有查询(例如电话簿。您可以轻松提取有关一个城市的页面)。但不适用于唯一过滤器是时间戳的查询(您只需要时间戳的索引,很难从电话簿中提取所有城市的所有史密斯)。

所以实际上索引的主要问题是它们在很大程度上取决于您通常在数据库上使用的查询。如果您从不在表上使用相同类型的查询,那么您将需要很多不同的索引。索引是占据一席之地的东西。大多数表为索引使用的物理空间比数据多 3 或 4 个物理空间。

关于mysql查询和索引怎么做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8607611/

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