草庐IT

Optimization

全部标签

mysql - 何时针对复合索引选择散列列

我想知道在哪些情况下应该首选带有索引的单个散列列而不是使用复合索引。在我的例子中,我有两个包含大约1个mio数据集的表,其中一个从另一个表接收更新值(它是一个数据导入例程)。我的环境使用MySQL5.1和5.5。例子:CREATETABLEpermanent(ref_id_1INT(10),ref_id_2INT(10),ref_id_3INT(10),ref_id_4INT(10),ref_dateDATE,valueINT(10));CREATETABLEimport(ref_id_1INT(10),ref_id_2INT(10),ref_id_3INT(10),ref_id_4I

具有子查询优化的 MySQL 查询

我构建了一个具有相当典型的用户/组/权限系统的CMS系统,其中用户可以是组的成员,权限可以直接应用于用户,也可以应用于用户可以属于的组。权限也可以是“通配符”(例如适用于所有对象)或适用于由模块名称和行ID指定的特定对象。权限可以是授予访问权限的“允许”,也可以是“拒绝”,它专门阻止访问并覆盖他们在其他地方授予的任何“允许”权限。拒绝存储在userpermission/grouppermission表中,方法是创建一个“允许”列设置为0的行。以下查询当前用于(并且有效)列出所有已被授予特定“通配符”权限(permissionid123)的用户。SELECT`user`.*FROM(SE

mysql - 在大 View 上优化 MySQL GROUP BY 或 DISTINCT

考虑一个由多个表组成的View...例如v_active_car,它由连接到body的表car组成>、engine、wheels和stereo。它可能看起来像这样:v_active_carsViewSELECT*FROMcarINNERJOINbodyONcar.body=body.body_idINNERJOINengineONcar.engine=engine.engine_idINNERJOINwheelsONcar.wheels=wheels.wheels_idINNERJOINstereoONcar.stereo=stereo.stereo_idWHEREcar.active

mysql - 优化 SQL 查询

我在优化此查询时遇到问题:SET@SEARCH="dokumentalne";SELECTSQL_NO_CACHE`AA`.`version`AS`Version`,`AA`.`contents`AS`Contents`,`AA`.`idarticle`AS`AdressInSQL`,`AA`.`topic`AS`Topic`,MATCH(`AA`.`topic`,`AA`.`contents`)AGAINST(@SEARCH)AS`Relevance`,`IA`.`url`AS`URL`FROM`xv_article`AS`AA`INNERJOIN`xv_articleindex`A

mysql - 如何优化以下查询

SELECTt1.theater_id,sum(t2.full_sale_price*t1.full_tickets+t2.half_sale_price*t1.half_tickets)asGross,sum(t2.full_cost_price*t1.full_tickets+t2.half_cost_price*t1.half_tickets)asCost,Round(sum((t2.full_sale_price*t1.full_tickets+t2.half_sale_price*t1.half_tickets)*t3.rate)/100,2)asIPG,(sum(t2.fu

mysql - 优化 WordPress 插件 "Better WordPress Recent Comments"中的慢查询

我正在优化针对MySQL的查询,我的慢查询日志显示WordPress插件“BetterWordPressRecentComments”小部件显示按帖子分组的最近5条评论,使用1.26秒来查询数据库,这是一个一个网站很长时间-特别是当下一个网站只需点击一下即可。这里是慢查询:Query_time:1.265625Lock_time:0.000000Rows_sent:6Rows_examined:288634设置时间戳=1443741678;SELECTwpcoms.*FROM(SELECT*,@num:=if(@post_id=comment_post_ID,@num+1,1)asro

mysql - MySQL 会自动最小化重复的 VARCHAR 存储吗?

问题针对的是在Ubuntu10.04LTSServer上运行的MySQL5.5,默认的InnoDB表类型...假设我有一个包含房屋地址的表“Address”,其中包含列“number”、“street”、“district”、“town”、“county”和“postcode”。我将在这些列中有许多具有相同值的行,并且我将单独为它们建立索引以进行搜索。假设我将每一列实现为VARCHAR(127)并创建1000行,所有行都包含town='London'。这是否意味着我最终在我的数据库中得到了字符串“London”的1000个副本,或者MySQL做了一些聪明的事情并仅存储该字符串一次,然后

mysql - IN查询有什么区别

这个问题在这里已经有了答案:MySQLUnexpectedResults:"IN"-clause(number,'string')onavarcharcolumn(2个答案)关闭7年前。我有两个MySQL表,Post和Account。我使用NodeJS作为我的后端API,它生成以下SQL语句:select`p`.`id`as`post_id`from`Post`as`p`leftjoin`Account`as`a`on`a`.`id`=`p`.`author`where`p`.`id`in('9','10','76','77',123)orderby`p`.`id`asc代码有效,问题

mysql - volatile 数据查询优化

我正在尝试解决mysql-5.0数据库的延迟问题。查询本身非常简单:SELECTSUM(items)FROMtblWHEREcol='val'col上有一个索引,在最坏的情况下,要求和的值不超过10000个(的所有值的count(items)的平均值)col将在10左右)。该表最多有200万行。查询运行频繁,有时执行时间长达10秒,尽管其中99%的执行时间为查询并不是真正可缓存的-在几乎所有情况下,像这样的每个查询都会在下一分钟插入到该表中,并且显示旧值是不可能的(账单信息)。key足够好-~100%命中我正在寻找的结果是每个查询 最佳答案

mysql - 我应该在删除多行后重置表索引/优化吗?

我有一个包含1,000,000条记录的表,我正在运行一条删除约70万行的语句。auto-increment-index当然仍然是1,000,001。之后的最高主键,例如40,000。删除如此大量的行后,我应该手动将索引设置回40,001还是以任何方式优化表?或者MySQL在插入新行和之后在select语句中使用索引时不关心这个巨大的差距(在速度方面)? 最佳答案 MySQLmanual说:OPTIMIZETABLEshouldbeusedifyouhavedeletedalargepartofatableorifyouhavemad