我只是在Zend中设置FirePHP,我注意到大量的DESCRIBE查询.某些页面在同一个表上有50个或更多相同的查询.例如
0.00198 connect NULL 0.00449 DESCRIBE `nodes` NULL 0.00041 SELECT `nodes`.* FROM `nodes` WHERE (((`nodes`.`id` = 111))) NULL 0.0037 DESCRIBE `nodes` NULL 0.00155 SELECT `nodes`.* FROM `nodes` WHERE (((`nodes`.`id` = 111))) NULL 0.00059 SELECT `nodes`.* FROM `nodes` WHERE (parent_id = '111') ORDER BY `order` ASC, `id` ASC NULL 0.00366 DESCRIBE `nodes` NULL 0.0054 DESCRIBE `nodes` NULL 0.0049 DESCRIBE `nodes` NULL 0.00519 DESCRIBE `nodes` NULL 0.00492 DESCRIBE `nodes` NULL 0.00691 DESCRIBE `nodes` NULL 0.00741 DESCRIBE `nodes` NULL 0.0048 DESCRIBE `nodes` NULL …
所以我有其他人写的这个查询,我正在尝试重构,这为项目提供了一些功能/材料(通常是鞋子).
有很多产品,因此有很多连接表条目,但只有少数几个可用的功能.我认为必须有一种方法可以减少触及"大"项目列表的需要,以获得这些功能,我听说要明确避免,但我没有可以替换此处"不同"选项的语句.
根据我的日志,我的结果时间很慢:
Query_time:7 Lock_time:0 Rows_sent:32 Rows_examined:5362862
Query_time:8 Lock_time:0 Rows_sent:22 Rows_examined:6581994
正如消息所说,有时它需要7或8秒,有时或每次查询超过500万行.
这可能是由于同时发生的其他负载,因为这里是直接从mysql命令行在数据库上运行的选择:
mysql> SELECT DISTINCT features.FeatureId, features.Name
FROM features, itemsfeatures, items
WHERE items.FlagStatus != 'U'
AND items.TypeId = '13'
AND features.Type = 'Material'
AND features.FeatureId = itemsfeatures.FeatureId
ORDER BY features.Name;
+-----------+--------------------+
| FeatureId | Name |
+-----------+--------------------+
| 40 | Alligator |
| 41 | Burnished Calfskin |
| 42 | Calfskin |
| 59 | Canvas |
| 43 | Chromexcel |
| 44 | Cordovan |
| …Run Code Online (Sandbox Code Playgroud) 如果您的Rail应用程序具有许多复杂的关联模型,您使用哪些技术来减少数据库查询?
事实上,我会进一步扩展这个问题,然后问一下,对于任何页面,你认为"太多"的查询是什么?
我有一个页面,我希望每页加载大约20次点击数据库.这是关注但不知道它是否应该关注我,或者我能做些什么来减轻负荷?
database optimization database-design ruby-on-rails query-optimization
正如标题中所述,在设计数据库时,处理具有多个列的表的首选方法是什么,这些列只是将true/false值存储为单个或者值(例如"Y/N:或"0/1") )?同样,是否存在可能影响列处理方式的不同数据库(例如Oracle和SQL Server)之间可能出现的问题?
最近,我的网络应用程序中的特定页面引发了
异常详细信息:MySql.Data.MySqlClient.MySqlException:超时已过期.操作完成之前经过的超时时间或服务器没有响应.
虽然我使用Ibtais作为持久层,但会发生此错误.我重新启动了MySql服务实例但是我得到了同样的错误.它没有发生在早期,但最近经常发生.
部署在服务器上的所有Web应用程序都使用Ibatis,并且DB服务器保留在安装IIS的同一台计算机上.大约有8000条记录,其中大约300到500个将在页面加载时被过滤
有关问题原因的任何见解?
有没有办法进一步优化这个或者我是否应该满足于计算11M行需要9秒?
devuser@xcmst > mysql --user=user --password=pass -D marctoxctransformation -e "desc record_updates"
+--------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| record_id | int(11) | YES | MUL | NULL | |
| date_updated | datetime | YES | MUL | NULL | |
+--------------+----------+------+-----+---------+-------+
devuser@xcmst > date; mysql --user=user --password=pass -D marctoxctransformation -e "select count(*) from record_updates where date_updated > '2009-10-11 15:33:22' "; date
Thu Dec 9 11:13:17 EST 2010
+----------+
| count(*) …Run Code Online (Sandbox Code Playgroud) 我有几百万个域名的SQL表.但现在当我搜索让我们说
SELECT *
FROM tblDomainResults
WHERE domainName LIKE '%lifeis%'
Run Code Online (Sandbox Code Playgroud)
获得结果需要10分钟以上.我试过索引,但没有帮助.
存储这数百万条记录并在短时间内轻松访问这些信息的最佳方法是什么?
到目前为止,大约有5000万条记录和5列.
我有一个相当稳定的有序图~100k顶点和大小~1k边.它是二维的,因为它的顶点可以用一对整数(x, y)(基数~100 x~1000)来识别,并且所有边都严格增加x.
此外,还存在(key, val)与每个顶点相关联的~1k 对的字典.
我目前存储在三个(InnoDB的)表中的MySQL数据库的图形:顶点(我不认为是有关我的问题的表,所以我忽略了包括它,这指的是外键约束它在我的摘录中); 一个包含词典的表格; 和Bill Karwin雄辩地描述的连接顶点的"闭合表".
顶点字典表定义如下:
CREATE TABLE `VertexDictionary` (
`x` smallint(6) unsigned NOT NULL,
`y` smallint(6) unsigned NOT NULL,
`key` varchar(50) NOT NULL DEFAULT '',
`val` smallint(1) DEFAULT NULL,
PRIMARY KEY (`x`, `y` , `key`),
KEY `dict` (`x`, `key`, `val`)
);
Run Code Online (Sandbox Code Playgroud)
和连接顶点的闭包表:
CREATE TABLE `ConnectedVertices` (
`tail_x` smallint(6) unsigned NOT NULL,
`tail_y` smallint(6) unsigned NOT NULL,
`head_x` smallint(6) unsigned NOT NULL,
`head_y` smallint(6) unsigned NOT NULL,
PRIMARY KEY …Run Code Online (Sandbox Code Playgroud) mysql sql database-design query-optimization data-structures
http://sqlfiddle.com/#!2/6a6b1
上面给出了该方案..我想要做的就是得到结果作为销售/月的总数...用户将输入开始日期和结束日期,我可以生成(在PHP中)所有月份和年份那些日期.例如,如果我想知道12个月的"销售"总数,我知道我可以运行12个具有开始和结束日期的单个查询,但我想只运行一个查询结果如下:
Month numofsale
January - 2
Feb-1
March - 23
Apr - 10
Run Code Online (Sandbox Code Playgroud)
等等...
或者只是一个没有月份的销售清单,然后我可以将它与PHP中生成的月份数组配对......任何想法......
从sqlfiddle.com粘贴的编辑/架构和数据:
CREATE TABLE IF NOT EXISTS `lead_activity2` (
`lead_activity_id` int(11) NOT NULL AUTO_INCREMENT,
`sp_id` int(11) NOT NULL,
`act_date` datetime NOT NULL,
`act_name` varchar(255) NOT NULL,
PRIMARY KEY (`lead_activity_id`),
KEY `act_date` (`act_date`),
KEY `act_name` (`act_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
INSERT INTO `lead_activity2` (`lead_activity_id`, `sp_id`, `act_date`, `act_name`) VALUES
(1, 5, '2012-10-16 16:05:29', 'sale'),
(2, 5, '2012-10-16 16:05:29', 'search'),
(3, 5, '2012-10-16 16:05:29', 'sale'),
(4, 5, …Run Code Online (Sandbox Code Playgroud) 有没有办法在不使用rdd.cache()的情况下缓存缓存sql查询结果?举些例子:
output = sqlContext.sql("SELECT * From people")
Run Code Online (Sandbox Code Playgroud)
我们可以使用output.cache()来缓存结果,但是我们不能使用sql查询来处理它.
所以我想问一下有什么像sqlcontext.cacheTable()来缓存结果吗?
mysql ×5
sql ×4
apache-spark ×1
c# ×1
caching ×1
database ×1
distinct ×1
ibatis ×1
optimization ×1
oracle ×1
php ×1
sql-like ×1
sql-server ×1