- 1
SELECT DISTINCT(sid) FROM
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−176
SELECT DISTINCT(sid) FROM
sid - уникальное значение(PK)
−118
Order by SYSDATE - NVL(p_date, created)
Сортировка по дате в обратном порядке
−128
CREATE TABLE IF NOT EXISTS `ls_user` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_login` varchar(30) NOT NULL,
`user_password` varchar(50) NOT NULL,
`user_mail` varchar(50) NOT NULL,
`user_skill` float(9,3) unsigned NOT NULL DEFAULT '0.000',
`user_date_register` datetime NOT NULL,
`user_date_activate` datetime DEFAULT NULL,
`user_date_comment_last` datetime DEFAULT NULL,
`user_ip_register` varchar(20) NOT NULL,
`user_rating` float(9,3) NOT NULL DEFAULT '0.000',
`user_count_vote` int(11) unsigned NOT NULL DEFAULT '0',
`user_activate` tinyint(1) unsigned NOT NULL DEFAULT '0',
`user_activate_key` varchar(32) DEFAULT NULL,
`user_profile_name` varchar(50) DEFAULT NULL,
`user_profile_sex` enum('man','woman','other') NOT NULL DEFAULT 'other',
`user_profile_country` varchar(30) DEFAULT NULL,
`user_profile_region` varchar(30) DEFAULT NULL,
`user_profile_city` varchar(30) DEFAULT NULL,
`user_profile_birthday` datetime DEFAULT NULL,
`user_profile_site` varchar(200) DEFAULT NULL,
`user_profile_site_name` varchar(50) DEFAULT NULL,
`user_profile_icq` bigint(20) unsigned DEFAULT NULL,
`user_profile_about` text,
`user_profile_date` datetime DEFAULT NULL,
`user_profile_avatar` varchar(250) DEFAULT NULL,
`user_profile_foto` varchar(250) DEFAULT NULL,
`user_settings_notice_new_topic` tinyint(1) NOT NULL DEFAULT '1',
`user_settings_notice_new_comment` tinyint(1) NOT NULL DEFAULT '1',
`user_settings_notice_new_talk` tinyint(1) NOT NULL DEFAULT '1',
`user_settings_notice_reply_comment` tinyint(1) NOT NULL DEFAULT '1',
`user_settings_notice_new_friend` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_login` (`user_login`),
UNIQUE KEY `user_mail` (`user_mail`),
KEY `user_activate_key` (`user_activate_key`),
KEY `user_activate` (`user_activate`),
KEY `user_rating` (`user_rating`),
KEY `user_profile_sex` (`user_profile_sex`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
[/code]
очень актуально смотрится эта таблица с приведённой выше. очень умно сделать таблицу "топик-стартер" и не выделить отдельно профиль пользователя. что чаще используется в выборке? =)
про миллионы пользователей и лайвстрит - не смешите, не верю (с)
загнётся до прихода в БД
дополнение к http://govnokod.ru/4203
выделил отдельным гауно-кодом из-за того, что комично смотрится вместе с указанной выше таблицей. ну и ограничение длины комментов есть. ярые искатели оптимизаций видимо идут мимо. очень актуально смотрится эта таблица с приведённой выше. очень умно сделать таблицу админов в один колумн и не выделить отдельно профиль пользователя. что чаще используется в выборке? =)
−125
CREATE TABLE IF NOT EXISTS `ls_user_administrator` (
`user_id` int(11) unsigned NOT NULL,
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Видимо сделать столбец 'administrator' в таблице `ls_user` и ставить в него 1 или 0 - это слишком просто.. Или тут скрыта какая-то оптимизация?
Дамп спёрт из LiveStreet.
−863
if (($pol) and ($brand)) {
$result = mysql_query("SELECT * FROM inetmag WHERE pol = '$pol' AND brand = '$brand'");
}
;
if ((!$pol) and ($brand)) {
$result = mysql_query("SELECT * FROM inetmag WHERE brand = '$brand'");
}
;
if (($pol) and (!$brand)) {
$result = mysql_query("SELECT * FROM inetmag WHERE pol = '$pol'");
}
;
if ((!$pol) and (!$brand)) {
$result = mysql_query("SELECT * FROM inetmag");
}
;
мой учитель сильно негодовал, и предложил вот это:
$url = <<< TEXT
SELECT *
FROM inetmag
WHERE
pol = IF(LENGTH('$pol')<>0,('$pol'),pol)
AND
brand = IF(LENGTH ('$brand')<>0,('$brand'),brand)
TEXT;
$result = mysql_query($url);
−865
FUNCTION f_decncity_arr_find_base(p_gds_id IN NUMBER, p_date IN DATE DEFAULT SYSDATE) RETURN VARCHAR2 IS
v_denc15 NUMBER; v_k0 NUMBER; v_k1 NUMBER;
BEGIN
decncity_arr_find_base(p_gds_id, p_date, v_denc15, v_k0, v_k1);
RETURN 'DENC15!=@'||TO_CHAR(v_denc15)||'@ K0!=@'||TO_CHAR(v_k0)||'@ K1!=@'||TO_CHAR(v_k1)||'@';
END;
Так и не поняли, что это....
−856
SELECT i.*, p.link as p_link, p.title as p_title, p.p_id FROM `items` i, `places` p WHERE i.public='1' and i.place=p.id and (i.place='1' or i.place='1972' or i.place='2' or i.place='3' or i.place='4' or i.place='5' or i.place='6' or i.place='7' or i.place='8' or i.place='9' or i.place='10' or i.place='11' or i.place='12' or i.place='13' or i.place='14' or i.place='15' or i.place='16' or i.place='17' or i.place='18' or i.place='19' or i.place='20' or i.place='21' or i.place='22' or i.place='23' or i.place='24' or i.place='25' or i.place='26' or i.place='27' or i.place='28' or i.place='29' or i.place='30' or i.place='31' or i.place='32' or i.place='33' or i.place='34' or i.place='35' or i.place='36' or i.place='37' or i.place='38' or i.place='39' or i.place='40' or i.place='41' or i.place='42' or i.place='43' or i.place='44' or i.place='45' or i.place='46' or i.place='47' or i.place='48' or i.place='49' or i.place='50' or i.place='51' or i.place='52' or i.place='53' or i.place='54' or i.place='55' or i.place='56' or i.place='57' or i.place='58' or i.place='59' or i.place='60' or i.place='61' or i.place='62' or i.place='63' or i.place='64' or i.place='65' or i.place='66' or i.place='67' or i.place='68' or i.place='69' or i.place='70' or i.place='71' or i.place='72' or i.place='73' or i.place='74' or i.place='75' or i.place='76' or i.place='77' or i.place='78' or i.place='79' or i.place='80' or i.place='81' or i.place='82' or i.place='83' or i.place='84' or i.place='85' or i.place='86' or i.place='87' or i.place='88' or i.place='89' or i.place='90' or i.place='91' or i.place='92' or i.place='93' or i.place='94' or i.place='95' or i.place='96' or i.place='97' or i.place='98' or i.place='99' or i.place='100' or i.place='101' or i.place='102' or i.place='103' or i.place='104' or i.place='105' or i.place='106' or i.place='107' or i.place='108' or i.place='109' or i.place='110' or i.place='111' or i.place='112' or i.place='113' or i.place='114' or i.place='115' or i.place='116' or i.place='117' or i.place='118' or i.place='119' or i.place='120' or i.place='121' or i.place='122' or i.place='123' or i.place='124' or i.place='125' or i.place='126' or i.place='127' or i.place='128' or i.place='129' or i.place='130' or i.place='131' or i.place='132' or i.place='133' or i.place='134' or i.place='135' or i.place='136' or i.place='137' or i.place='138' or i.place='139' or i.place='140' or i.place='141' or i.place='142' or i.place='143' or i.place='144' or i.place='145' or i.place='146' or i.place='147' or i.place='148' or i.place='149' or i.place='150' or i.place='151' or i.place='152' or i.place='153' or i.place='154' or i.place='155' or i.place='156' or i.place='157' or i.place='158' or i.place='159' or i.place='160' or i.place='161' or i.place='162' or i.place='163' or i.place='164' or i.place='165' or i.place='166') ORDER BY i.lastupdated DESC LIMIT 18160, 10;
есть ещё примерно такой же, но с JOINами
−854
procedure dynamic_open(p_sql VARCHAR2, p_params t_string_table, p_cur OUT SYS_REFCURSOR) is
begin
case p_params.count
when 0 then open p_cur for p_sql;
when 1 then open p_cur for p_sql using p_params(1);
when 2 then open p_cur for p_sql using p_params(1),
p_params(2);
when 3 then open p_cur for p_sql using p_params(1),
p_params(2),
p_params(3);
when 4 then open p_cur for p_sql using p_params(1),
p_params(2),
p_params(3),
p_params(4);
/* ... */
when 100 then open p_cur for p_sql using p_params(1),
p_params(2),
p_params(3),
p_params(4),
/* ... */
p_params(100);
end case;
end dynamic_open;
Динамический SQL - такой динамический. Уложились всего-то в 5050 строк.
−866
ALTER PROCEDURE [dbo].[spSearch]
@Name nvarchar(256)
AS
BEGIN
SET NOCOUNT ON
DECLARE @qry VARCHAR(MAX)
DECLARE @Where VARCHAR(1000)
SET @Where = '1=1'
IF ISNULL(@Name,'') <> ''
BEGIN
SET @Where = @Where + ' and a.Name = ''' + @Name + ''''
END
SET @Where = @Where + ' and a.Active = 1'
SET @qry ='
select a.* from t_Table1 a
WHERE ' + @Where +
' order by a.Name'
EXECUTE (@qry)
END
−865
(
(
((
SELECT a.* FROM collections a
LEFT JOIN link_xml_collections lxa ON
lxa.collection_id = a.id
WHERE lxa.xml_id IS NULL
) UNION (
SELECT a.* FROM collections a
WHERE get_action_of_collection_last_xml(a.id, a.modified) = 3
)) INTERSECT (
SELECT a.* FROM collections a
LEFT JOIN link_collection_compositions AS lcc ON lcc.collection_id = a.id
LEFT JOIN compositions AS c ON c.id = lcc.composition_id
WHERE c.status = 0
)
) INTERSECT (
SELECT a.* FROM public.collections AS a
LEFT JOIN link_collection_compositions AS lcc ON lcc.collection_id = a.id
LEFT JOIN compositions AS c ON c.id = lcc.composition_id WHERE c.owner_id = 6 AND a.modified >= '2010-08-10 00:00:00'
)
) EXCEPT (
SELECT a.* FROM collections a WHERE a.title_ua ILIKE 'TEST%'
)
Попросили пофиксить багу в функции, которая в зависимости от передаваемых параметров формировала sql запрос и возвращала данные. (Человек коротый это писал уволился.) Решил залогировать конечный sql запрос - получилось такое.