Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > MySQL

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-24-2008, 06:09 PM
incuso
 
Posts: n/a
Default How to not repeat functions?

I am extensively using string functions on a table fields to extract
suitable data.

Unfortunately, I do not understand how to avoid to repeat them (that I
assume is wasting CPU cycles).

Just an example

SELECT * FROM a bunch of tables WHERE other conditions AND
SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1) BETWEEN
X AND Y OR SUBSTRING_INDEX(REPLACE(REPLACE(peso,",","."),"
g",""),"-",1) BETWEEN X AND Y OR
(SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1)<X
AND SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1)>Y)

Ok, ok there is an error in the function usage, but this is not the
point, it is only an example.

You can see that "SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".") ,"
g",""),"-",1)" is reapeted 4 times, is there any way to use it only
once?

Thanks!
M.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-24-2008, 06:09 PM
Captain Paralytic
 
Posts: n/a
Default Re: How to not repeat functions?

On 23 Apr, 06:49, incuso <numismat...@gmail.com> wrote:
> I am extensively using string functions on a table fields to extract
> suitable data.
>
> Unfortunately, I do not understand how to avoid to repeat them (that I
> assume is wasting CPU cycles).
>
> Just an example
>
> SELECT * FROM a bunch of tables WHERE other conditions AND
> SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1) BETWEEN
> X AND Y OR SUBSTRING_INDEX(REPLACE(REPLACE(peso,",","."),"
> g",""),"-",1) BETWEEN X AND Y OR
> (SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1)<X
> AND SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1)>Y)
>
> Ok, ok there is an error in the function usage, but this is not the
> point, it is only an example.
>
> You can see that "SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".") ,"
> g",""),"-",1)" is reapeted 4 times, is there any way to use it only
> once?
>
> Thanks!
> M.


Put it in the SELECT part, alias it and use the alias in a HAVING
clause
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-24-2008, 06:09 PM
Captain Paralytic
 
Posts: n/a
Default Re: How to not repeat functions?

On 23 Apr, 06:49, incuso <numismat...@gmail.com> wrote:
> I am extensively using string functions on a table fields to extract
> suitable data.
>
> Unfortunately, I do not understand how to avoid to repeat them (that I
> assume is wasting CPU cycles).
>
> Just an example
>
> SELECT * FROM a bunch of tables WHERE other conditions AND
> SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1) BETWEEN
> X AND Y OR SUBSTRING_INDEX(REPLACE(REPLACE(peso,",","."),"
> g",""),"-",1) BETWEEN X AND Y OR
> (SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1)<X
> AND SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".")," g",""),"-",1)>Y)
>
> Ok, ok there is an error in the function usage, but this is not the
> point, it is only an example.
>
> You can see that "SUBSTRING_INDEX(REPLACE(REPLACE(peso,",",".") ,"
> g",""),"-",1)" is reapeted 4 times, is there any way to use it only
> once?
>
> Thanks!
> M.


Also, you might want to re-visit a design that causes you to have to
use such expressions in the select clause in the first place.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 04-24-2008, 06:09 PM
incuso
 
Posts: n/a
Default Re: How to not repeat functions?

On 23 Apr, 12:06, Captain Paralytic <paul_laut...@yahoo.com> wrote:
> Also, you might want to re-visit a design that causes you to have to
> use such expressions in the select clause in the first place.


Thanks, it works fine and faster!

the DB already contains a lot of data (it is a wiki like web site) and
therefore I prefer to not touch its structure at least when the
problem is not so critical. Basically I improved a search function not
often used.

Thanks again,
Massimo
--
http://numismatica-italiana.lamoneta.it
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 07:12 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145