草庐IT

OPTIMIZATION

全部标签

mysql - 如何针对 LIKE '%abc%' 查询优化包含 1.6+ 万条记录的 MySQL 表

我有一个具有这种结构的表,它目前包含大约160万条记录。CREATETABLE`chatindex`(`timestamp`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,`roomname`varchar(90)COLLATEutf8_binNOTNULL,`username`varchar(60)COLLATEutf8_binNOTNULL,`filecount`int(10)unsignedNOTNULL,`connection`int(2)unsignedNOTNULL,`primaryip`int(10)unsignedNOTNULL,`pr

mysql - 使非规范化模式保持最新的最佳实践?

我正在创建一个游戏,通过做一些小事来获得积分,所以我有一个这样的模式:createtablepoints(idint,pointsint,reasonvarchar(10))并且获取用户拥有的点数是微不足道的:selectsum(points)astotalfrompointswhereid=?然而,随着积分表的扩大,性能已成为越来越重要的问题。我想做类似的事情:createtablepointtotal(idint,totalpointsint)保持它们同步的最佳做法是什么?我是否尝试在每次更改时更新pointtotal?我是否运行每日脚本?(假设我有正确的键——为简洁起见,它们被省

MySQL TEXT 字段性能

我的1000个MySQL表中的每一个都有几个TEXT和/或MEDIUMTEXT字段。我现在知道TEXT字段在查询时写入磁盘而不是内存。即使在查询中未调用该字段也是如此吗?例如,如果我有一个包含2个字段(idint(11)和注释文本)的表(tbExam)并且我运行SELECTidFROMtbExam,MySQL是否仍然必须在返回结果之前将其写入磁盘或者它是否会运行该查询在内存中?我想弄清楚是否需要重新配置实际的数据库表以切换到varchar(xxxx)或保留文本字段并重新配置查询。 最佳答案 InowknowthatTEXTfield

mysql - 如果我的应用程序在保存数据之前已经验证了数据,为什么我需要对列使用 UNIQUE 约束?

UNIQUE是使您的领域独一无二的索引。但是,如果您在插入新数据之前已经在PHP中进行了验证,那么还值得使用它吗?额外的INDEX并不是世界末日,但如果您在查询优化之后,那么UNIQUE就会成为阻碍,对吧? 最佳答案 如果您是一名优秀的司机,为什么要系安全带并且可以节省两秒的总行程时间?程序员要学习的最重要的一课是,他也是人,他也会犯错误。更糟糕的是,编写这段代码的其他人也是人。为什么存在UNIQUE约束?保护数据库免于人为错误。关闭你的UNIQUE约束意味着“你不必担心,数据库先生,我永远不会给你不符合我意图的数据。”如果您的代码

mysql - 遍历mysql中字符串中的字符

首先我有一个非常具体的问题,但也许解决我的问题的替代方法(第二部分)也可以帮助我。有没有办法通过mysql中的索引来寻址字符串中的字符。(即在PHP中$var[2]会给你第三个字符)?明显的方法是SUBSTRING(var,3,1)但由于我的字符串长度为1024个字符,我认为这不是最快的解决方案。如代码示例中所示,使用子字符串检索字符串的尾部也没有性能差异。有没有办法遍历字符串?(移动第一个元素?)CREATEFUNCTIONhashDiff(hash1TEXT(1024),hash2TEXT(1024),thresholdINT)RETURNSINTDETERMINISTICBEGI

mysql - SQL请求优化

我有一个SQL请求在工作时占用了我100%的VMCPU。我想知道如何优化它:SELECTg.nameAShostgroup,h.nameAShostname,a.host_id,s.display_nameASservicename,a.service_id,a.entry_timeASack_time,(SELECTctimeFROMlogsWHERElogs.host_id=a.host_idANDlogs.service_id=a.service_idANDlogs.ctime问题出在这部分:(SELECTctimeFROMlogsWHERElogs.host_id=a.host

mysql - 最佳观看次数策略

我目前将每个View与用户IP、查看日期等一起存储在数据库中。但是我的网站有大量点击,这增加了数据库锁定时间并降低了性能。我想将计数保存在文件中1小时,然后更新数据库,但有人告诉我我们不对重负载站点使用文件操作。请建议我执行此操作的最佳策略。注意:我不需要计算唯一浏览量。 最佳答案 您的网络服务器日志已经为您跟踪了大部分此类数据。我的建议是每小时轮换一次日志,然后安排一个作业来生成聚合统计数据并将它们存储在数据库中。 关于mysql-最佳观看次数策略,我们在StackOverflow上找

mysql - 如何基于explain优化mysql查询。 (键入 : ALL

我运行以下mysql查询并看到第一个查询的类型为ALL。mysql>EXPLAINSELECTone.language_idasfilter_id,one.language_nameasfilter_name,two.countascountFROMbooks_f9_languagesoneINNERJOIN(SELECTlanguage_id,count(*)ascountFROMlink_f9_books_listsWHEREbooks_list_idIN(1691,1,2,3,4,6,7,8,9,10,11,12,13,14,17,18,19,20,21,22,23,24,25,

mysql - 为什么 GROUP BY on FULLTEXT INDEX 使用临时的?

我正在使用这个表(MySQL/引擎:MyISAM):CREATETABLE`activities`(`id_activity`int(10)unsignedNOTNULLAUTO_INCREMENT,`id_doc`int(10)unsignedNOTNULLDEFAULT'0',`node_id`tinytextNOTNULL,`title`tinytextNOTNULL,`name`tinytextNOTNULL,`keywords`tinytextNOTNULL,`page_type`tinytextNOTNULL,`page_screen_id`tinytextNOTNULL,

mysql - 如何优化 mysql date_format() 以提高 where 子句中的速度?

我正在尝试优化具有220,000行的相对较大的mysql(myisam)表。表格本身并不大——大约23.5MB。那么,真正的问题是什么?-我收到这样的查询:SELECT*FROMtableWHEREDATE_FORMAT(date_field,'%m%d')='1128'LIMIT10我试图在date_field上设置一个索引,但EXPLAIN显示该索引根本没有被使用……我想这并不奇怪,因为DATE_FORMAT()。所以,我打算添加另一列,将日期保存为“%m%d”并在其上放置一个索引。我不想这样做的唯一原因是数据重复。顺便说一句,我使用date_field是一个生日字段,我确定我总是