gpt4 book ai didi

php - mysql高效查询(选择和更新)

转载 作者:行者123 更新时间:2023-11-29 09:03:00 25 4
gpt4 key购买 nike

我有一个表,其结构如下:

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`ttype` int(1) DEFAULT '19',
`title` mediumtext,
`tcode` char(2) DEFAULT NULL,
`tdate` int(11) DEFAULT NULL,
`visit` int(11) DEFAULT '0',
PRIMARY KEY (`id`),
KEY `tcode` (`tcode`),
KEY `ttype` (`ttype`),
KEY `tdate` (`tdate`)


ENGINE=MyISAM

我在 x.php 上有两个查询,如下所示:

SELECT * FROM table_name WHERE id='10' LIMIT 1
UPDATE table_name SET visit=visit+1 WHERE id='10' LIMIT 1

我的第一个问题是更新表中的“访问”是否会导致重新索引并降低性能?请注意,“访问”不是关键。

第二种方法可能是创建包含“访问”的新表,如下所示:

'newid' int(10)  unsigned NOT NULL ,
`visit` int(11) DEFAULT '0',
PRIMARY KEY (`newid`),

ENGINE=MyISAM

所以选择

SELECT w.*,q.visit FROM table_name w  LEFT JOIN table_name2 q 
ON (w.id=q.newid) WHERE w.id='10' LIMIT 1

UPDATE table_name2 SET visit=visit+1 WHERE newid='10' LIMIT 1

第二种方法是否优于第一种方法?哪一个性能更好并且速度更快?

注意:所有 sql 查询都将由 PHP 运行(mysql_query 命令)。另外,我需要第一个表索引来用于其他页面上的其他查询。

最佳答案

我想说你的第一种方法是最好的,也是最简单的。更新访问速度非常快,不需要更新索引。

我更喜欢第一个,并且过去曾将其用于类似的事情,没有任何问题。您可以删除 limit 子句,因为 id 是您的主键,您永远不会有超过 1 个结果,尽管查询优化器可能会为您执行此操作。

关于php - mysql高效查询(选择和更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015779/

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